Author: jvanzyl Date: Mon Jan 9 17:45:00 2006 New Revision: 367457 URL: http://svn.apache.org/viewcvs?rev=367457&view=rev Log: [MNG-1927] Fixing the ${pom.build.directory} path translation and interpolation so that an absolute path is rendered.
Added: maven/components/trunk/integration-tests/maven-core-it-plugin/src/main/java/org/apache/maven/plugin/coreit/InterpolatedPomConfigurationMojo.java (with props) Modified: maven/components/trunk/maven-core-it/it0088/pom.xml maven/components/trunk/maven-core-it/it0088/src/test/java/org/apache/maven/it0088/PomInterpolationTest.java maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/path/DefaultPathTranslator.java Added: maven/components/trunk/integration-tests/maven-core-it-plugin/src/main/java/org/apache/maven/plugin/coreit/InterpolatedPomConfigurationMojo.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/integration-tests/maven-core-it-plugin/src/main/java/org/apache/maven/plugin/coreit/InterpolatedPomConfigurationMojo.java?rev=367457&view=auto ============================================================================== --- maven/components/trunk/integration-tests/maven-core-it-plugin/src/main/java/org/apache/maven/plugin/coreit/InterpolatedPomConfigurationMojo.java (added) +++ maven/components/trunk/integration-tests/maven-core-it-plugin/src/main/java/org/apache/maven/plugin/coreit/InterpolatedPomConfigurationMojo.java Mon Jan 9 17:45:00 2006 @@ -0,0 +1,47 @@ +package org.apache.maven.plugin.coreit; + +import org.apache.maven.plugin.AbstractMojo; +import org.apache.maven.plugin.MojoExecutionException; + +import java.util.Properties; +import java.io.FileOutputStream; +import java.io.File; + +/** + * Take some configuration values that use interpolated POM values and write them to a properties file + * to make sure they are passing through the system properly. We have reports (MNG-1927) that we're + * + * @goal generate-properties + */ +public class InterpolatedPomConfigurationMojo + extends AbstractMojo +{ + /** + * @parameter expression="${basedir}" + */ + private String basedir; + + /** + * @parameter expression="${project.build.directory}" + */ + private String projectBuildDirectory; + + public void execute() + throws MojoExecutionException + { + try + { + Properties mojoGeneratedPropeties = new Properties(); + + mojoGeneratedPropeties.put( "project.build.directory", projectBuildDirectory ); + + FileOutputStream fos = new FileOutputStream( new File( basedir, "target/mojo-generated.properties" ) ); + + mojoGeneratedPropeties.store( fos, "# Properties generated by the execution of a mojo that uses interpolated POM values for configuration." ); + } + catch( Exception e ) + { + getLog().error( "Error creating mojo generated properties.", e ); + } + } +} Propchange: maven/components/trunk/integration-tests/maven-core-it-plugin/src/main/java/org/apache/maven/plugin/coreit/InterpolatedPomConfigurationMojo.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/components/trunk/integration-tests/maven-core-it-plugin/src/main/java/org/apache/maven/plugin/coreit/InterpolatedPomConfigurationMojo.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Modified: maven/components/trunk/maven-core-it/it0088/pom.xml URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0088/pom.xml?rev=367457&r1=367456&r2=367457&view=diff ============================================================================== --- maven/components/trunk/maven-core-it/it0088/pom.xml (original) +++ maven/components/trunk/maven-core-it/it0088/pom.xml Mon Jan 9 17:45:00 2006 @@ -19,5 +19,22 @@ <filtering>true</filtering> </resource> </resources> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-core-it-plugin</artifactId> + <executions> + <execution> + <phase>process-resources</phase> + <configuration> + <pomBuildDirectory>${pom.build.directory}</pomBuildDirectory> + </configuration> + <goals> + <goal>generate-properties</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> </build> </project> Modified: maven/components/trunk/maven-core-it/it0088/src/test/java/org/apache/maven/it0088/PomInterpolationTest.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it/it0088/src/test/java/org/apache/maven/it0088/PomInterpolationTest.java?rev=367457&r1=367456&r2=367457&view=diff ============================================================================== --- maven/components/trunk/maven-core-it/it0088/src/test/java/org/apache/maven/it0088/PomInterpolationTest.java (original) +++ maven/components/trunk/maven-core-it/it0088/src/test/java/org/apache/maven/it0088/PomInterpolationTest.java Mon Jan 9 17:45:00 2006 @@ -17,12 +17,28 @@ basedir = System.getProperty( "basedir" ); } - public void testProjectBuildDirectory() + public void testProjectBuildDirectoryAfterResourceFiltering() throws Exception { Properties testProperties = new Properties(); File testPropertiesFile = new File( basedir, "target/classes/test.properties" ); + + assertTrue( testPropertiesFile.exists() ); + + testProperties.load( new FileInputStream( testPropertiesFile ) ); + + File projectBuildDirectory = new File( basedir, "target" ); + + assertEquals( testProperties.getProperty( "project.build.directory" ), projectBuildDirectory.getAbsolutePath() ); + } + + public void testProjectBuildDirectoryAfterForMojoExecution() + throws Exception + { + Properties testProperties = new Properties(); + + File testPropertiesFile = new File( basedir, "target/mojo-generated.properties" ); assertTrue( testPropertiesFile.exists() ); Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=367457&r1=367456&r2=367457&view=diff ============================================================================== --- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original) +++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Mon Jan 9 17:45:00 2006 @@ -722,6 +722,43 @@ context.put( "basedir", projectDir.getAbsolutePath() ); } + // ---------------------------------------------------------------------- + // We need to translate the paths before interpolation so that things + // like this: + // + //<project> + // ... + // <build> + // <plugins> + // <plugin> + // <groupId>org.apache.maven.plugins</groupId> + // <artifactId>maven-core-it-plugin</artifactId> + // <executions> + // <execution> + // <phase>process-resources</phase> + // <configuration> + // <pomBuildDirectory>${pom.build.directory}</pomBuildDirectory> + // </configuration> + // <goals> + // <goal>generate-properties</goal> + // </goals> + // </execution> + // </executions> + // </plugin> + // </plugins> + // </build> + //</project> + // + // Are handled correctly where the ${pom.build.directory} must be path + // translated in the POM first. So in the Super POM the ${pom.build.directory} + // will get shifted to /some/absolute/path/target and then during the + // interpolation phase the <pomBuildDirectory/> element up thre will + // have the ${pom.build.directory} string swapped out and replaced with + // /some/absolute/path/target. [MNG-1927] + // ---------------------------------------------------------------------- + + pathTranslator.alignToBaseDirectory( project.getModel(), projectDir ); + model = modelInterpolator.interpolate( model, context, strict ); // interpolation is before injection, because interpolation is off-limits in the injected variables Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/path/DefaultPathTranslator.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/path/DefaultPathTranslator.java?rev=367457&r1=367456&r2=367457&view=diff ============================================================================== --- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/path/DefaultPathTranslator.java (original) +++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/path/DefaultPathTranslator.java Mon Jan 9 17:45:00 2006 @@ -80,7 +80,7 @@ if ( requiresBaseDirectoryAlignment( s ) ) { - s = new File( basedir, s ).getPath(); + s = new File( basedir, s ).getAbsolutePath(); } return s;