Author: jdcasey Date: Fri Aug 22 21:07:12 2008 New Revision: 688259 URL: http://svn.apache.org/viewvc?rev=688259&view=rev Log: [MNG-3724] make execution-project instances short lived, to remove problems of syncing compile/test-compile/script source roots added to the corresponding main project.
Added: maven/components/branches/maven-2.0.10-RC/maven-project/src/test/resources/project-dynamism/pom-source-roots.xml Modified: maven/components/branches/maven-2.0.10-RC/ (props changed) maven/components/branches/maven-2.0.10-RC/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/MavenProjectDynamismTest.java Propchange: maven/components/branches/maven-2.0.10-RC/ ------------------------------------------------------------------------------ --- svn:ignore (original) +++ svn:ignore Fri Aug 22 21:07:12 2008 @@ -1,4 +1,4 @@ -bootstrap` +bootstrap release.properties maven.log target Modified: maven/components/branches/maven-2.0.10-RC/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.10-RC/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=688259&r1=688258&r2=688259&view=diff ============================================================================== --- maven/components/branches/maven-2.0.10-RC/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java (original) +++ maven/components/branches/maven-2.0.10-RC/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java Fri Aug 22 21:07:12 2008 @@ -711,20 +711,20 @@ 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 ( 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 ) // { Modified: maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/MavenProjectDynamismTest.java URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/MavenProjectDynamismTest.java?rev=688259&r1=688258&r2=688259&view=diff ============================================================================== --- maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/MavenProjectDynamismTest.java (original) +++ maven/components/branches/maven-2.0.10-RC/maven-project/src/test/java/org/apache/maven/project/MavenProjectDynamismTest.java Fri Aug 22 21:07:12 2008 @@ -90,7 +90,7 @@ + " should have a an interpolated POM groupId as its value.", children[i].getValue(), project.getGroupId() ); } - + project.getProperties().setProperty( "foo", "bar" ); projectBuilder.restoreDynamicState( project, new DefaultProjectBuilderConfiguration() ); @@ -221,7 +221,7 @@ assertEquals( "Concrete build directory should be absolute.", new File( baseDir, "target" ).getAbsolutePath(), new File( build.getDirectory() ).getAbsolutePath() ); - + // Next, we have to change something to ensure the project is restored to its dynamic state. project.getProperties().setProperty( "restoreTrigger", "true" ); @@ -483,52 +483,108 @@ throws IOException, XmlPullParserException, URISyntaxException, ProjectBuildingException, ModelInterpolationException { - // TODO: Make this run! MavenProject project = buildProject( "pom-plugins.xml" ); String firstPlugin = "one:first-maven-plugin"; String secondPlugin = "two:second-maven-plugin"; String thirdPlugin = "three:third-maven-plugin"; - + project.getBuild().flushPluginMap(); Map pluginMap = project.getBuild().getPluginsAsMap(); - - assertNotNull( "Before calculating concrete state, project should contain plugin: " + firstPlugin, pluginMap.get( firstPlugin ) ); - assertNotNull( "Before calculating concrete state, project should contain plugin: " + secondPlugin, pluginMap.get( secondPlugin ) ); - assertNull( "Before calculating concrete state, project should NOT contain plugin: " + thirdPlugin, pluginMap.get( thirdPlugin ) ); + + assertNotNull( "Before calculating concrete state, project should contain plugin: " + firstPlugin, + pluginMap.get( firstPlugin ) ); + assertNotNull( "Before calculating concrete state, project should contain plugin: " + secondPlugin, + pluginMap.get( secondPlugin ) ); + assertNull( "Before calculating concrete state, project should NOT contain plugin: " + thirdPlugin, + pluginMap.get( thirdPlugin ) ); ProjectBuilderConfiguration config = new DefaultProjectBuilderConfiguration(); projectBuilder.calculateConcreteState( project, config ); - + project.getBuild().flushPluginMap(); pluginMap = project.getBuild().getPluginsAsMap(); - - assertNotNull( "After calculating concrete state, project should contain plugin: " + firstPlugin, pluginMap.get( firstPlugin ) ); - assertNotNull( "After calculating concrete state, project should contain plugin: " + secondPlugin, pluginMap.get( secondPlugin ) ); - assertNull( "After calculating concrete state, project should NOT contain plugin: " + thirdPlugin, pluginMap.get( thirdPlugin ) ); - + + assertNotNull( "After calculating concrete state, project should contain plugin: " + firstPlugin, + pluginMap.get( firstPlugin ) ); + assertNotNull( "After calculating concrete state, project should contain plugin: " + secondPlugin, + pluginMap.get( secondPlugin ) ); + assertNull( "After calculating concrete state, project should NOT contain plugin: " + thirdPlugin, + pluginMap.get( thirdPlugin ) ); + Plugin third = new Plugin(); third.setGroupId( "three" ); third.setArtifactId( "third-maven-plugin" ); third.setVersion( "3" ); - + project.addPlugin( third ); - + project.getBuild().flushPluginMap(); pluginMap = project.getBuild().getPluginsAsMap(); - - assertNotNull( "After adding third plugin, project should contain plugin: " + firstPlugin, pluginMap.get( firstPlugin ) ); - assertNotNull( "After adding third plugin, project should contain plugin: " + secondPlugin, pluginMap.get( secondPlugin ) ); - assertNotNull( "After adding third plugin, project should contain plugin: " + thirdPlugin, pluginMap.get( thirdPlugin ) ); - + + assertNotNull( "After adding third plugin, project should contain plugin: " + firstPlugin, + pluginMap.get( firstPlugin ) ); + assertNotNull( "After adding third plugin, project should contain plugin: " + secondPlugin, + pluginMap.get( secondPlugin ) ); + assertNotNull( "After adding third plugin, project should contain plugin: " + thirdPlugin, + pluginMap.get( thirdPlugin ) ); + projectBuilder.restoreDynamicState( project, config ); project.getBuild().flushPluginMap(); pluginMap = project.getBuild().getPluginsAsMap(); + + assertNotNull( "After restoring project dynamism, project should contain plugin: " + firstPlugin, + pluginMap.get( firstPlugin ) ); + assertNotNull( "After restoring project dynamism, project should contain plugin: " + secondPlugin, + pluginMap.get( secondPlugin ) ); + assertNotNull( "After restoring project dynamism, project should contain plugin: " + thirdPlugin, + pluginMap.get( thirdPlugin ) ); + } + + public void testShouldMaintainAddedAndExistingSourceRootsInRoundTrip() + throws IOException, XmlPullParserException, URISyntaxException, ProjectBuildingException, + ModelInterpolationException + { + MavenProject project = buildProject( "pom-source-roots.xml" ); + + File basedir = project.getBasedir(); + + ProjectBuilderConfiguration config = new DefaultProjectBuilderConfiguration(); + projectBuilder.calculateConcreteState( project, config ); + + assertTrue( "Before adding source roots, project should be concrete", project.isConcrete() ); + assertEquals( "Before adding source roots, project should contain one compile source root", 1, project.getCompileSourceRoots().size() ); + assertEquals( "First compile source root should be absolute ref to src/main/java", new File( basedir, "src/main/java" ).getAbsolutePath(), project.getCompileSourceRoots().get( 0 ) ); + + assertEquals( "Before adding source roots, project should contain one test source root", 1, project.getTestCompileSourceRoots().size() ); + assertEquals( "First test source root should be absolute ref to src/test/java", new File( basedir, "src/test/java" ).getAbsolutePath(), project.getTestCompileSourceRoots().get( 0 ) ); + + assertEquals( "Before adding source roots, project should contain one script source root", 1, project.getScriptSourceRoots().size() ); + assertEquals( "First script source root should be absolute ref to src/main/scripts", new File( basedir, "src/main/scripts" ).getAbsolutePath(), project.getScriptSourceRoots().get( 0 ) ); + + project.addCompileSourceRoot( new File( basedir, "target/generated/src/main/java" ).getAbsolutePath() ); + project.addTestCompileSourceRoot( new File( basedir, "target/generated/src/test/java" ).getAbsolutePath() ); + project.addScriptSourceRoot( new File( basedir, "target/generated/src/main/scripts" ).getAbsolutePath() ); + + project.getProperties().setProperty( "trigger-transition", "true" ); + + projectBuilder.restoreDynamicState( project, config ); + + projectBuilder.calculateConcreteState( project, config ); - assertNotNull( "After restoring project dynamism, project should contain plugin: " + firstPlugin, pluginMap.get( firstPlugin ) ); - assertNotNull( "After restoring project dynamism, project should contain plugin: " + secondPlugin, pluginMap.get( secondPlugin ) ); - assertNotNull( "After restoring project dynamism, project should contain plugin: " + thirdPlugin, pluginMap.get( thirdPlugin ) ); + assertTrue( "After adding source roots and transitioning, project should be concrete", project.isConcrete() ); + assertEquals( "After adding source roots and transitioning, project should contain two compile source roots", 2, project.getCompileSourceRoots().size() ); + assertEquals( "First compile source root should be absolute ref to src/main/java", new File( basedir, "src/main/java" ).getAbsolutePath(), project.getCompileSourceRoots().get( 0 ) ); + assertEquals( "Second compile source root should be absolute ref to target/generated/src/main/java", new File( basedir, "target/generated/src/main/java" ).getAbsolutePath(), project.getCompileSourceRoots().get( 1 ) ); + + assertEquals( "After adding source roots and transitioning, project should contain two test source roots", 2, project.getTestCompileSourceRoots().size() ); + assertEquals( "First test source root should be absolute ref to src/test/java", new File( basedir, "src/test/java" ).getAbsolutePath(), project.getTestCompileSourceRoots().get( 0 ) ); + assertEquals( "Second test source root should be absolute ref to target/generated/src/test/java", new File( basedir, "target/generated/src/test/java" ).getAbsolutePath(), project.getTestCompileSourceRoots().get( 1 ) ); + + assertEquals( "After adding source roots and transitioning, project should contain two script source roots", 2, project.getScriptSourceRoots().size() ); + assertEquals( "First script source root should be absolute ref to src/main/scripts", new File( basedir, "src/main/scripts" ).getAbsolutePath(), project.getScriptSourceRoots().get( 0 ) ); + assertEquals( "Second script source root should be absolute ref to target/generated/src/main/scripts", new File( basedir, "target/generated/src/main/scripts" ).getAbsolutePath(), project.getScriptSourceRoots().get( 1 ) ); } public void testShouldInterpolatePluginLevelDependency() Added: maven/components/branches/maven-2.0.10-RC/maven-project/src/test/resources/project-dynamism/pom-source-roots.xml URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.10-RC/maven-project/src/test/resources/project-dynamism/pom-source-roots.xml?rev=688259&view=auto ============================================================================== --- maven/components/branches/maven-2.0.10-RC/maven-project/src/test/resources/project-dynamism/pom-source-roots.xml (added) +++ maven/components/branches/maven-2.0.10-RC/maven-project/src/test/resources/project-dynamism/pom-source-roots.xml Fri Aug 22 21:07:12 2008 @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + + <modelVersion>4.0.0</modelVersion> + + <groupId>org.test</groupId> + <artifactId>test-build-dynamism</artifactId> + <version>1</version> + + <build> + <sourceDirectory>src/main/java</sourceDirectory> + <testSourceDirectory>src/test/java</testSourceDirectory> + <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory> + </build> + +</project> \ No newline at end of file