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 ); + } } }