[MNG-4327] [regression] Forking mojos that are bound to a lifecycle phase that gets forked execute multiple times

git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@808556 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Benjamin Bentmann 2009-08-27 18:00:56 +00:00
parent 7e24255ab4
commit 6da9bf5c0a
1 changed files with 16 additions and 4 deletions

View File

@ -984,6 +984,8 @@ private void calculateForkedExecutions( MojoExecution mojoExecution, MavenSessio
mojoExecution.addForkedExecutions( getKey( forkedProject ), forkedExecutions );
}
alreadyForkedExecutions.remove( mojoDescriptor );
}
private List<MojoExecution> calculateForkedGoal( MojoExecution mojoExecution, MavenSession session,
@ -1005,6 +1007,11 @@ private List<MojoExecution> calculateForkedGoal( MojoExecution mojoExecution, Ma
throw new MojoNotFoundException( forkedGoal, pluginDescriptor );
}
if ( alreadyForkedExecutions.contains( forkedMojoDescriptor ) )
{
return Collections.emptyList();
}
MojoExecution forkedExecution = new MojoExecution( forkedMojoDescriptor, forkedGoal );
populateMojoExecutionConfiguration( project, forkedExecution, true );
@ -1052,13 +1059,18 @@ private List<MojoExecution> calculateForkedLifecycle( MojoExecution mojoExecutio
for ( List<MojoExecution> forkedExecutions : lifecycleMappings.values() )
{
for ( MojoExecution forkedExecution : forkedExecutions )
for ( Iterator<MojoExecution> it = forkedExecutions.iterator(); it.hasNext(); )
{
extractMojoConfiguration( forkedExecution );
MojoExecution forkedExecution = it.next();
calculateForkedExecutions( forkedExecution, session, project, alreadyForkedExecutions );
if ( !alreadyForkedExecutions.contains( forkedExecution.getMojoDescriptor() ) )
{
extractMojoConfiguration( forkedExecution );
mojoExecutions.add( forkedExecution );
calculateForkedExecutions( forkedExecution, session, project, alreadyForkedExecutions );
mojoExecutions.add( forkedExecution );
}
}
}