[MNG-7112] Do not select child modules when --non-recursive is given.

Closes #459
This commit is contained in:
Martin Kanters 2021-03-22 11:39:09 +01:00
parent 276c6a8dc4
commit 7c742c298b
4 changed files with 29 additions and 6 deletions

View File

@ -199,4 +199,9 @@ public void deactivateOptionalProject( String selector )
{
this.activations.add( new ProjectActivationSettings( selector, ActivationSettings.DEACTIVATION_OPTIONAL ) );
}
public boolean isEmpty()
{
return this.activations.isEmpty();
}
}

View File

@ -233,7 +233,7 @@ private Set<MavenProject> getProjectsBySelectors( MavenExecutionRequest request,
selectedProjects.add( selectedProject );
List<MavenProject> children = selectedProject.getCollectedProjects();
if ( children != null )
if ( children != null && request.isRecursive() )
{
selectedProjects.addAll( children );
}

View File

@ -60,8 +60,9 @@ public List<MavenProject> selectProjects( List<File> files, MavenExecutionReques
{
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() );

View File

@ -117,9 +117,13 @@ public static Stream<Arguments> parameters()
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 @@ public static Stream<Arguments> parameters()
.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 @@ void testGetReactorProjects(
String parameterResumeFrom,
String parameterMakeBehavior,
ExpectedResult parameterExpectedResult,
File parameterRequestedPom)
File parameterRequestedPom,
boolean parameterRecursive )
{
// Given
ProjectActivation projectActivation = new ProjectActivation();
@ -275,6 +284,7 @@ void testGetReactorProjects(
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 @@ static class ScenarioBuilder
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 @@ public ScenarioBuilder requestedPom( String requestedPom )
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 @@ private Arguments createTestArguments( ExpectedResult expectedResult )
{
return Arguments.arguments( description, activeRequiredProjects, activeOptionalProjects,
inactiveRequiredProjects, inactiveOptionalProjects, resumeFrom, makeBehavior, expectedResult,
requestedPom );
requestedPom, recursive );
}
private List<String> prependWithColonIfNeeded( String[] selectors )