You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ma...@apache.org on 2021/04/02 14:13:35 UTC

[maven] branch master updated: [MNG-7112] Do not select child modules when --non-recursive is given.

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 <ma...@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 )