Author: bentmann
Date: Thu Aug 27 18:00:56 2009
New Revision: 808556
URL: http://svn.apache.org/viewvc?rev=808556&view=rev
Log:
[MNG-4327] [regression] Forking mojos that are bound to a lifecycle phase that
gets forked execute multiple times
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
URL:
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=808556&r1=808555&r2=808556&view=diff
==============================================================================
---
maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
(original)
+++
maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
Thu Aug 27 18:00:56 2009
@@ -984,6 +984,8 @@
mojoExecution.addForkedExecutions( getKey( forkedProject ),
forkedExecutions );
}
+
+ alreadyForkedExecutions.remove( mojoDescriptor );
}
private List<MojoExecution> calculateForkedGoal( MojoExecution
mojoExecution, MavenSession session,
@@ -1005,6 +1007,11 @@
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 @@
for ( List<MojoExecution> forkedExecutions :
lifecycleMappings.values() )
{
- for ( MojoExecution forkedExecution : forkedExecutions )
+ for ( Iterator<MojoExecution> it = forkedExecutions.iterator();
it.hasNext(); )
{
- extractMojoConfiguration( forkedExecution );
+ MojoExecution forkedExecution = it.next();
+
+ if ( !alreadyForkedExecutions.contains(
forkedExecution.getMojoDescriptor() ) )
+ {
+ extractMojoConfiguration( forkedExecution );
- calculateForkedExecutions( forkedExecution, session, project,
alreadyForkedExecutions );
+ calculateForkedExecutions( forkedExecution, session,
project, alreadyForkedExecutions );
- mojoExecutions.add( forkedExecution );
+ mojoExecutions.add( forkedExecution );
+ }
}
}