[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 @@ public class DefaultLifecycleExecutor
mojoExecution.addForkedExecutions( getKey( forkedProject ), forkedExecutions );
}
alreadyForkedExecutions.remove( mojoDescriptor );
}
private List<MojoExecution> calculateForkedGoal( MojoExecution mojoExecution, MavenSession session,
@ -1005,6 +1007,11 @@ public class DefaultLifecycleExecutor
throw new MojoNotFoundException( forkedGoal, pluginDescriptor );
}
if ( alreadyForkedExecutions.contains( forkedMojoDescriptor ) )
{
return Collections.emptyList();
}
MojoExecution forkedExecution = new MojoExecution( forkedMojoDescriptor, forkedGoal );
populateMojoExecutionConfiguration( project, forkedExecution, true );
@ -1052,7 +1059,11 @@ public class DefaultLifecycleExecutor
for ( List<MojoExecution> forkedExecutions : lifecycleMappings.values() )
{
for ( MojoExecution forkedExecution : forkedExecutions )
for ( Iterator<MojoExecution> it = forkedExecutions.iterator(); it.hasNext(); )
{
MojoExecution forkedExecution = it.next();
if ( !alreadyForkedExecutions.contains( forkedExecution.getMojoDescriptor() ) )
{
extractMojoConfiguration( forkedExecution );
@ -1061,6 +1072,7 @@ public class DefaultLifecycleExecutor
mojoExecutions.add( forkedExecution );
}
}
}
return mojoExecutions;
}