mirror of https://github.com/apache/maven.git
[MNG-7102] Exclude all children of aggregators, even if the aggregator was already removed from the reactor.
This commit is contained in:
parent
1ab29f5485
commit
c4cd93d55f
|
@ -141,7 +141,7 @@ private Result<ProjectDependencyGraph> reactorDependencyGraph( MavenSession sess
|
|||
activeProjects = trimProjectsToRequest( activeProjects, projectDependencyGraph, session.getRequest() );
|
||||
activeProjects = trimSelectedProjects( activeProjects, projectDependencyGraph, session.getRequest() );
|
||||
activeProjects = trimResumedProjects( activeProjects, projectDependencyGraph, session.getRequest() );
|
||||
activeProjects = trimExcludedProjects( activeProjects, session.getRequest() );
|
||||
activeProjects = trimExcludedProjects( activeProjects, projectDependencyGraph, session.getRequest() );
|
||||
|
||||
if ( activeProjects.size() != projectDependencyGraph.getSortedProjects().size() )
|
||||
{
|
||||
|
@ -269,7 +269,8 @@ private List<MavenProject> trimResumedProjects( List<MavenProject> projects, Pro
|
|||
return result;
|
||||
}
|
||||
|
||||
private List<MavenProject> trimExcludedProjects( List<MavenProject> projects, MavenExecutionRequest request )
|
||||
private List<MavenProject> trimExcludedProjects( List<MavenProject> projects, ProjectDependencyGraph graph,
|
||||
MavenExecutionRequest request )
|
||||
throws MavenExecutionException
|
||||
{
|
||||
List<MavenProject> result = projects;
|
||||
|
@ -280,24 +281,12 @@ private List<MavenProject> trimExcludedProjects( List<MavenProject> projects, Ma
|
|||
if ( !requiredSelectors.isEmpty() || !optionalSelectors.isEmpty() )
|
||||
{
|
||||
Set<MavenProject> excludedProjects = new HashSet<>( requiredSelectors.size() + optionalSelectors.size() );
|
||||
excludedProjects.addAll( getProjectsBySelectors( request, projects, requiredSelectors, true ) );
|
||||
excludedProjects.addAll( getProjectsBySelectors( request, projects, optionalSelectors, false ) );
|
||||
List<MavenProject> allProjects = graph.getAllProjects();
|
||||
excludedProjects.addAll( getProjectsBySelectors( request, allProjects, requiredSelectors, true ) );
|
||||
excludedProjects.addAll( getProjectsBySelectors( request, allProjects, optionalSelectors, false ) );
|
||||
|
||||
result = new ArrayList<>( projects );
|
||||
|
||||
for ( MavenProject excludedProject : excludedProjects )
|
||||
{
|
||||
boolean isExcludedProjectRemoved = result.remove( excludedProject );
|
||||
|
||||
if ( isExcludedProjectRemoved )
|
||||
{
|
||||
List<MavenProject> children = excludedProject.getCollectedProjects();
|
||||
if ( children != null )
|
||||
{
|
||||
result.removeAll( children );
|
||||
}
|
||||
}
|
||||
}
|
||||
result.removeAll( excludedProjects );
|
||||
|
||||
if ( result.isEmpty() )
|
||||
{
|
||||
|
|
|
@ -147,6 +147,10 @@ public static Stream<Arguments> parameters()
|
|||
.activeRequiredProjects( MODULE_A )
|
||||
.inactiveRequiredProjects( MODULE_A )
|
||||
.expectResult( MavenExecutionException.class, "empty reactor" ),
|
||||
scenario( "Excluded aggregator, but selected child" )
|
||||
.activeRequiredProjects( MODULE_C_1 )
|
||||
.inactiveRequiredProjects( MODULE_C )
|
||||
.expectResult( MavenExecutionException.class, "empty reactor" ),
|
||||
scenario( "Project selected with different selector resolves to same project" )
|
||||
.activeRequiredProjects( GROUP_ID + ":" + MODULE_A )
|
||||
.inactiveRequiredProjects( MODULE_A )
|
||||
|
@ -282,7 +286,7 @@ void testGetReactorProjects(
|
|||
// Then
|
||||
if ( parameterExpectedResult instanceof SelectedProjectsResult )
|
||||
{
|
||||
assertThat( result.hasErrors() ).isFalse();
|
||||
assertThat( result.hasErrors() ).withFailMessage( "Expected result not to have errors" ).isFalse();
|
||||
List<String> expectedProjectNames = ((SelectedProjectsResult) parameterExpectedResult).projectNames;
|
||||
List<MavenProject> actualReactorProjects = result.get().getSortedProjects();
|
||||
List<MavenProject> expectedReactorProjects = expectedProjectNames.stream()
|
||||
|
@ -292,7 +296,7 @@ void testGetReactorProjects(
|
|||
}
|
||||
else
|
||||
{
|
||||
assertThat( result.hasErrors() ).isTrue();
|
||||
assertThat( result.hasErrors() ).withFailMessage( "Expected result to have errors" ).isTrue();
|
||||
Class<? extends Throwable> expectedException = ((ExceptionThrown) parameterExpectedResult).expected;
|
||||
String partOfMessage = ((ExceptionThrown) parameterExpectedResult).partOfMessage;
|
||||
|
||||
|
|
Loading…
Reference in New Issue