This is an automated email from the ASF dual-hosted git repository. martinkanters pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/maven.git
The following commit(s) were added to refs/heads/master by this push: new 7c742c2 [MNG-7112] Do not select child modules when --non-recursive is given. 7c742c2 is described below commit 7c742c298b60f60b1f8b92e43e4952ee128a4cd0 Author: Martin Kanters <martinkant...@apache.org> AuthorDate: Mon Mar 22 11:39:09 2021 +0100 [MNG-7112] Do not select child modules when --non-recursive is given. Closes #459 --- .../apache/maven/execution/ProjectActivation.java | 5 +++++ .../apache/maven/graph/DefaultGraphBuilder.java | 2 +- .../project/collector/DefaultProjectsSelector.java | 5 +++-- .../maven/graph/DefaultGraphBuilderTest.java | 23 +++++++++++++++++++--- 4 files changed, 29 insertions(+), 6 deletions(-) diff --git a/maven-core/src/main/java/org/apache/maven/execution/ProjectActivation.java b/maven-core/src/main/java/org/apache/maven/execution/ProjectActivation.java index 579ab18..a1d366c 100644 --- a/maven-core/src/main/java/org/apache/maven/execution/ProjectActivation.java +++ b/maven-core/src/main/java/org/apache/maven/execution/ProjectActivation.java @@ -199,4 +199,9 @@ public class ProjectActivation { this.activations.add( new ProjectActivationSettings( selector, ActivationSettings.DEACTIVATION_OPTIONAL ) ); } + + public boolean isEmpty() + { + return this.activations.isEmpty(); + } } diff --git a/maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java b/maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java index 0dbd039..d1236e8 100644 --- a/maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java +++ b/maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java @@ -233,7 +233,7 @@ public class DefaultGraphBuilder selectedProjects.add( selectedProject ); List<MavenProject> children = selectedProject.getCollectedProjects(); - if ( children != null ) + if ( children != null && request.isRecursive() ) { selectedProjects.addAll( children ); } diff --git a/maven-core/src/main/java/org/apache/maven/project/collector/DefaultProjectsSelector.java b/maven-core/src/main/java/org/apache/maven/project/collector/DefaultProjectsSelector.java index d341d0a..74be84a 100644 --- a/maven-core/src/main/java/org/apache/maven/project/collector/DefaultProjectsSelector.java +++ b/maven-core/src/main/java/org/apache/maven/project/collector/DefaultProjectsSelector.java @@ -60,8 +60,9 @@ public class DefaultProjectsSelector implements ProjectsSelector { ProjectBuildingRequest projectBuildingRequest = request.getProjectBuildingRequest(); - List<ProjectBuildingResult> results = projectBuilder.build( files, request.isRecursive(), - projectBuildingRequest ); + boolean hasProjectSelection = !request.getProjectActivation().isEmpty(); + boolean isRecursive = hasProjectSelection || request.isRecursive(); + List<ProjectBuildingResult> results = projectBuilder.build( files, isRecursive, projectBuildingRequest ); List<MavenProject> projects = new ArrayList<>( results.size() ); diff --git a/maven-core/src/test/java/org/apache/maven/graph/DefaultGraphBuilderTest.java b/maven-core/src/test/java/org/apache/maven/graph/DefaultGraphBuilderTest.java index 58885dd..8ff4711 100644 --- a/maven-core/src/test/java/org/apache/maven/graph/DefaultGraphBuilderTest.java +++ b/maven-core/src/test/java/org/apache/maven/graph/DefaultGraphBuilderTest.java @@ -117,9 +117,13 @@ class DefaultGraphBuilderTest scenario( "Selected project" ) .activeRequiredProjects( MODULE_B ) .expectResult( MODULE_B ), - scenario( "Selected project (including child modules)" ) + scenario( "Selected aggregator project (including child modules)" ) .activeRequiredProjects( MODULE_C ) .expectResult( MODULE_C, MODULE_C_1, MODULE_C_2 ), + scenario( "Selected aggregator project with non-recursive" ) + .activeRequiredProjects( MODULE_C ) + .nonRecursive() + .expectResult( MODULE_C ), scenario( "Selected optional project" ) .activeOptionalProjects( MODULE_B ) .expectResult( MODULE_B ), @@ -143,6 +147,10 @@ class DefaultGraphBuilderTest .inactiveOptionalProjects( "non-existing-module" ) .inactiveRequiredProjects( MODULE_B ) .expectResult( PARENT_MODULE, MODULE_C, MODULE_C_1, MODULE_A, MODULE_C_2, INDEPENDENT_MODULE ), + scenario( "Excluded aggregator project with non-recursive" ) + .inactiveRequiredProjects( MODULE_C ) + .nonRecursive() + .expectResult( PARENT_MODULE, MODULE_C_1, MODULE_A, MODULE_B, MODULE_C_2, INDEPENDENT_MODULE ), scenario( "Selected and excluded same project" ) .activeRequiredProjects( MODULE_A ) .inactiveRequiredProjects( MODULE_A ) @@ -263,7 +271,8 @@ class DefaultGraphBuilderTest String parameterResumeFrom, String parameterMakeBehavior, ExpectedResult parameterExpectedResult, - File parameterRequestedPom) + File parameterRequestedPom, + boolean parameterRecursive ) { // Given ProjectActivation projectActivation = new ProjectActivation(); @@ -275,6 +284,7 @@ class DefaultGraphBuilderTest when( mavenExecutionRequest.getProjectActivation() ).thenReturn( projectActivation ); when( mavenExecutionRequest.getMakeBehavior() ).thenReturn( parameterMakeBehavior ); when( mavenExecutionRequest.getPom() ).thenReturn( parameterRequestedPom ); + when( mavenExecutionRequest.isRecursive() ).thenReturn( parameterRecursive ); if ( StringUtils.isNotEmpty( parameterResumeFrom ) ) { when( mavenExecutionRequest.getResumeFrom() ).thenReturn( ":" + parameterResumeFrom ); @@ -394,6 +404,7 @@ class DefaultGraphBuilderTest private String resumeFrom = ""; private String makeBehavior = ""; private File requestedPom = new File( PARENT_MODULE, "pom.xml" ); + private boolean recursive = true; private ScenarioBuilder() { } @@ -446,6 +457,12 @@ class DefaultGraphBuilderTest return this; } + public ScenarioBuilder nonRecursive() + { + this.recursive = false; + return this; + } + public Arguments expectResult( String... expectedReactorProjects ) { ExpectedResult expectedResult = new SelectedProjectsResult( asList( expectedReactorProjects ) ); @@ -462,7 +479,7 @@ class DefaultGraphBuilderTest { return Arguments.arguments( description, activeRequiredProjects, activeOptionalProjects, inactiveRequiredProjects, inactiveOptionalProjects, resumeFrom, makeBehavior, expectedResult, - requestedPom ); + requestedPom, recursive ); } private List<String> prependWithColonIfNeeded( String[] selectors )