[MNG-7646] Do not parse the whole reactor unless required by command line options (#963)

This commit is contained in:
Guillaume Nodet 2023-01-26 11:42:23 +01:00 committed by GitHub
parent 38b447b85f
commit f77de570b7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 6 deletions

View File

@ -242,6 +242,13 @@ private MavenExecutionResult doExecute(
return addExceptionToResult(result, e);
}
try {
WorkspaceReader reactorReader = container.lookup(WorkspaceReader.class, ReactorReader.HINT);
repoSession.setWorkspaceReader(reactorReader);
} catch (ComponentLookupException e) {
return addExceptionToResult(result, e);
}
eventCatapult.fire(ExecutionEvent.Type.ProjectDiscoveryStarted, session, null);
Result<? extends ProjectDependencyGraph> graphResult = buildGraph(session);
@ -332,12 +339,13 @@ private MavenExecutionResult doExecute(
private void setupWorkspaceReader(MavenSession session, DefaultRepositorySystemSession repoSession)
throws ComponentLookupException {
// Desired order of precedence for workspace readers before querying the local artifact repositories
List<WorkspaceReader> workspaceReaders = new ArrayList<WorkspaceReader>();
List<WorkspaceReader> workspaceReaders = new ArrayList<>();
// 1) Reactor workspace reader
workspaceReaders.add(container.lookup(WorkspaceReader.class, ReactorReader.HINT));
WorkspaceReader reactorReader = container.lookup(WorkspaceReader.class, ReactorReader.HINT);
workspaceReaders.add(reactorReader);
// 2) Repository system session-scoped workspace reader
WorkspaceReader repoWorkspaceReader = repoSession.getWorkspaceReader();
if (repoWorkspaceReader != null) {
if (repoWorkspaceReader != null && repoWorkspaceReader != reactorReader) {
workspaceReaders.add(repoWorkspaceReader);
}
// 3) .. n) Project-scoped workspace readers

View File

@ -351,9 +351,11 @@ private List<MavenProject> getProjectsForMavenReactor(MavenSession session) thro
}
// 2. Collect projects for all modules in the multi-module project.
List<MavenProject> projects = multiModuleCollectionStrategy.collectProjects(request);
if (!projects.isEmpty()) {
return projects;
if (request.getMakeBehavior() != null || !request.getProjectActivation().isEmpty()) {
List<MavenProject> projects = multiModuleCollectionStrategy.collectProjects(request);
if (!projects.isEmpty()) {
return projects;
}
}
// 3. Collect projects for explicitly requested POM.