Author: jdcasey Date: Thu Sep 11 10:40:00 2008 New Revision: 694376 URL: http://svn.apache.org/viewvc?rev=694376&view=rev Log: Merging in fix for MNG-3729, for real this time.
Modified: maven/components/branches/maven-2.1.x/ (props changed) maven/components/branches/maven-2.1.x/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java maven/components/branches/maven-2.1.x/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java (props changed) Propchange: maven/components/branches/maven-2.1.x/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Thu Sep 11 10:40:00 2008 @@ -1,4 +1,4 @@ /maven/components/branches/maven-2.0.10-RC:679193-679867,680477-688882 /maven/components/branches/maven-2.0.x:679552-679867 /maven/components/branches/maven-2.1.0-M1-RC:690315,691793-694304 -/maven/components/branches/maven-2.1.0-RC:688883,689695,689990 +/maven/components/branches/maven-2.1.0-RC:688883,689695,689976,689990 Modified: maven/components/branches/maven-2.1.x/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.1.x/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=694376&r1=694375&r2=694376&view=diff ============================================================================== --- maven/components/branches/maven-2.1.x/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java (original) +++ maven/components/branches/maven-2.1.x/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java Thu Sep 11 10:40:00 2008 @@ -601,22 +601,21 @@ if ( hasFork ) { + // NOTE: This must always happen, regardless of treatment of reactorProjects below, because + // if we're in a forked execution right now, the current project will itself be an execution project of + // something in the reactorProjects list, and won't have a next-stage executionProject created + // for it otherwise, which leaves the project == null for the upcoming forked execution. + createExecutionProject( project, session, true ); + if ( usesReactorProjects ) { List reactorProjects = session.getSortedProjects(); for ( Iterator it = reactorProjects.iterator(); it.hasNext(); ) { MavenProject reactorProject = (MavenProject) it.next(); - if ( reactorProject.getExecutionProject() == null ) - { - createExecutionProject( reactorProject, session, false ); - } + createExecutionProject( reactorProject, session, false ); } } - else - { - createExecutionProject( project, session, true ); - } } if ( mojoDescriptor.getExecutePhase() != null || mojoDescriptor.getExecuteGoal() != null ) @@ -652,6 +651,12 @@ if ( hasFork ) { + // NOTE: This must always happen, regardless of treatment of reactorProjects below, because + // if we're in a forked execution right now, the current project will itself be an execution project of + // something in the reactorProjects list, and may not have had its own executionProject instance reset to + // a concrete state again after the previous forked executions. + calculateConcreteState( project.getExecutionProject(), session, true ); + // FIXME: Would be nice to find a way to cause the execution project to stay in a concrete state... // TODO: Test this! It should be fixed, but I don't want to destabilize until I have the issue I'm working on fixed. if ( usesReactorProjects ) @@ -664,10 +669,6 @@ calculateConcreteState( reactorProject.getExecutionProject(), session, false ); } } - else - { - calculateConcreteState( project.getExecutionProject(), session, true ); - } } try @@ -703,44 +704,17 @@ { throw new LifecycleExecutionException( e.getMessage(), e ); } - - if ( hasFork ) - { - project.setExecutionProject( null ); - - if ( usesReactorProjects ) - { - List reactorProjects = session.getSortedProjects(); - for ( Iterator it = reactorProjects.iterator(); it.hasNext(); ) - { - MavenProject reactorProject = (MavenProject) it.next(); - reactorProject.setExecutionProject( null ); - } - } - } - -// if ( usesReactorProjects ) -// { -// restoreAllDynamicStates( session ); -// } -// else -// { -// restoreDynamicState( project, session, true ); -// } } } private void createExecutionProject( MavenProject project, MavenSession session, boolean processProjectReferences ) throws LifecycleExecutionException { - if ( project.getExecutionProject() == null ) - { - MavenProject executionProject = new MavenProject( project ); - - calculateConcreteState( executionProject, session, processProjectReferences ); - - project.setExecutionProject( executionProject ); - } + MavenProject executionProject = new MavenProject( project ); + + calculateConcreteState( executionProject, session, processProjectReferences ); + + project.setExecutionProject( executionProject ); } private boolean usesSessionOrReactorProjects( PlexusConfiguration configuration ) Propchange: maven/components/branches/maven-2.1.x/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Thu Sep 11 10:40:00 2008 @@ -1,3 +1,3 @@ /maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java:688259 /maven/components/branches/maven-2.1.0-M1-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java:690315,691793 -/maven/components/branches/maven-2.1.0-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java:688883,689695,689990 +/maven/components/branches/maven-2.1.0-RC/maven-project/src/test/java/org/apache/maven/project/interpolation/AbstractModelInterpolatorTest.java:688883,689695,689976,689990