[MNG-7102] The child modules of excluded projects are now excluded as well, making the behavior consistent with MNG-6981.
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 797cbe2..49d52af 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
@@ -255,7 +255,17 @@
.findFirst()
.orElseThrow( () -> new MavenExecutionException( "Could not find the selected project in "
+ "the reactor: " + selector, request.getPom() ) );
- result.remove( excludedProject );
+
+ boolean isExcludedProjectRemoved = result.remove( excludedProject );
+
+ if ( isExcludedProjectRemoved )
+ {
+ List<MavenProject> children = excludedProject.getCollectedProjects();
+ if ( children != null )
+ {
+ result.removeAll( children );
+ }
+ }
}
}
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 4a8f9c0..e82c735 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
@@ -147,6 +147,9 @@
.excludedProjects( MODULE_B )
.makeBehavior( REACTOR_MAKE_UPSTREAM )
.expectResult( PARENT_MODULE, MODULE_C, MODULE_A, MODULE_C_2 ),
+ scenario( "Excluding a project also excludes its children" )
+ .excludedProjects( MODULE_C )
+ .expectResult( PARENT_MODULE, MODULE_A, MODULE_B, INDEPENDENT_MODULE ),
scenario( "Excluding an also make dependency from resumeFrom does take its transitive dependency" )
.resumeFrom( MODULE_C_2 )
.excludedProjects( MODULE_B )