in impl/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectBuilder.java [75:201]
protected ProjectBuilderResult doBuild(ProjectBuilderRequest request)
throws ProjectBuilderException, IllegalArgumentException {
InternalMavenSession session = InternalMavenSession.from(request.getSession());
RequestTraceHelper.ResolverTrace trace = RequestTraceHelper.enter(request.getSession(), request);
try {
List<ArtifactRepository> repositories = session.toArtifactRepositories(
request.getRepositories() != null ? request.getRepositories() : session.getRemoteRepositories());
ProjectBuildingRequest req = new DefaultProjectBuildingRequest()
.setRepositorySession(session.getSession())
.setRemoteRepositories(repositories)
.setPluginArtifactRepositories(repositories)
.setProcessPlugins(request.isProcessPlugins());
ProjectBuildingResult res;
if (request.getPath().isPresent()) {
Path path = request.getPath().get();
res = builder.build(path.toFile(), req);
} else if (request.getSource().isPresent()) {
Source source = request.getSource().get();
ModelSource2 modelSource = new SourceWrapper(source);
res = builder.build(modelSource, req);
} else {
throw new IllegalArgumentException("Invalid request");
}
return new ProjectBuilderResult() {
@Override
public ProjectBuilderRequest getRequest() {
return request;
}
@Nonnull
@Override
public String getProjectId() {
return res.getProjectId();
}
@Nonnull
@Override
public Optional<Path> getPomFile() {
return Optional.ofNullable(res.getPomFile()).map(File::toPath);
}
@Nonnull
@Override
public Optional<Project> getProject() {
return Optional.ofNullable(session.getProject(res.getProject()));
}
@Nonnull
@Override
public Collection<BuilderProblem> getProblems() {
return new MappedCollection<>(res.getProblems(), this::toProblem);
}
private BuilderProblem toProblem(ModelProblem problem) {
return new BuilderProblem() {
@Override
public String getSource() {
return problem.getSource();
}
@Override
public int getLineNumber() {
return problem.getLineNumber();
}
@Override
public int getColumnNumber() {
return problem.getColumnNumber();
}
@Override
public String getLocation() {
StringBuilder buffer = new StringBuilder(256);
if (!getSource().isEmpty()) {
buffer.append(getSource());
}
if (getLineNumber() > 0) {
if (!buffer.isEmpty()) {
buffer.append(", ");
}
buffer.append("line ").append(getLineNumber());
}
if (getColumnNumber() > 0) {
if (!buffer.isEmpty()) {
buffer.append(", ");
}
buffer.append("column ").append(getColumnNumber());
}
return buffer.toString();
}
@Override
public Exception getException() {
return problem.getException();
}
@Override
public String getMessage() {
return problem.getMessage();
}
@Override
public Severity getSeverity() {
return Severity.valueOf(problem.getSeverity().name());
}
};
}
@Nonnull
@Override
public Optional<DependencyResolverResult> getDependencyResolverResult() {
return Optional.ofNullable(res.getDependencyResolutionResult())
.map(r -> new DefaultDependencyResolverResult(
// TODO: this should not be null
null, null, r.getCollectionErrors(), session.getNode(r.getDependencyGraph()), 0));
}
};
} catch (ProjectBuildingException e) {
throw new ProjectBuilderException("Unable to build project", e);
} finally {
RequestTraceHelper.exit(trace);
}
}