Author: jdcasey Date: Mon Feb 18 15:30:47 2008 New Revision: 628920 URL: http://svn.apache.org/viewvc?rev=628920&view=rev Log: [MASSEMBLY-256] Support project properties in outputFileNameMapping and outputDirectory.
Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/PropertiesInterpolationValueSource.java maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtilsTest.java Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java?rev=628920&r1=628919&r2=628920&view=diff ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java (original) +++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java Mon Feb 18 15:30:47 2008 @@ -88,8 +88,9 @@ * A. MavenProject instance from current build * 5. no prefix, using main project instance * A. MavenProject instance from current build - * 6. System properties - * 7. environment variables. + * 6. properties of the main project + * 7. System properties + * 8. environment variables. * */ public static String getOutputDirectory( String output, MavenProject mainProject, MavenProject artifactProject, @@ -147,14 +148,17 @@ if ( mainProject != null ) { interpolator.addValueSource( new ObjectBasedValueSource( mainProject ) ); + + // 6 + interpolator.addValueSource( new PropertiesInterpolationValueSource( mainProject.getProperties() ) ); } - // 6 + // 7 interpolator.addValueSource( new PropertiesInterpolationValueSource( System.getProperties() ) ); try { - // 7 + // 8 interpolator.addValueSource( new PropertiesInterpolationValueSource( CommandLineUtils.getSystemEnvVars( false ) ) ); } catch ( IOException e ) @@ -199,8 +203,9 @@ * 4. no prefix, using main project instance * A. MavenProject instance from current build * 5. Support for special expressions, like ${dashClassifier?} - * 6. System properties - * 7. environment variables. + * 6. properties from main project + * 7. System properties + * 8. environment variables. * */ public static String evaluateFileNameMapping( String expression, Artifact artifact, MavenProject mainProject, MavenProject artifactProject, String artifactProjectRefName ) @@ -280,12 +285,18 @@ // 5 interpolator.addValueSource( new PropertiesInterpolationValueSource( specialRules ) ); - // 6 + if ( mainProject != null ) + { + // 6 + interpolator.addValueSource( new PropertiesInterpolationValueSource( mainProject.getProperties() ) ); + } + + // 7 interpolator.addValueSource( new PropertiesInterpolationValueSource( System.getProperties() ) ); try { - // 7 + // 8 interpolator.addValueSource( new PropertiesInterpolationValueSource( CommandLineUtils.getSystemEnvVars( false ) ) ); } catch ( IOException e ) Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/PropertiesInterpolationValueSource.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/PropertiesInterpolationValueSource.java?rev=628920&r1=628919&r2=628920&view=diff ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/PropertiesInterpolationValueSource.java (original) +++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/PropertiesInterpolationValueSource.java Mon Feb 18 15:30:47 2008 @@ -39,7 +39,7 @@ public Object getValue( String key ) { - return properties.getProperty( key ); + return properties == null ? null : properties.getProperty( key ); } } Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java?rev=628920&r1=628919&r2=628920&view=diff ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java (original) +++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java Mon Feb 18 15:30:47 2008 @@ -157,7 +157,9 @@ ProjectBuildingException pbe = new ProjectBuildingException( "test", "Test error." ); MockAndControlForAddDependencySetsTask macTask = new MockAndControlForAddDependencySetsTask( - mockManager ); + mockManager, + new MavenProject( + new Model() ) ); String gid = "org.test"; String aid = "test-dep"; @@ -226,7 +228,7 @@ ds.setFileMode( Integer.toString( 10, 8 ) ); MockAndControlForAddDependencySetsTask macTask = new MockAndControlForAddDependencySetsTask( - mockManager ); + mockManager, new MavenProject( new Model() ) ); ArtifactMock artifactMock = new ArtifactMock( mockManager, "group", "artifact", "version", "jar", false ); Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtilsTest.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtilsTest.java?rev=628920&r1=628919&r2=628920&view=diff ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtilsTest.java (original) +++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtilsTest.java Mon Feb 18 15:30:47 2008 @@ -29,6 +29,8 @@ import org.apache.maven.project.MavenProject; import org.easymock.MockControl; +import java.util.Properties; + import junit.framework.TestCase; @@ -180,6 +182,14 @@ verifyOutputDir( null, null, null, null, null, "" ); } + public void testGetOutputDir_ShouldResolveProjectProperty() throws AssemblyFormattingException + { + Properties props = new Properties(); + props.setProperty( "myProperty", "value" ); + + verifyOutputDir( "file.${myProperty}", null, null, null, null, null, "file.value/", null, true, props ); + } + public void testEvalFileNameMapping_ShouldResolveArtifactIdAndBaseVersionInOutDir_UseArtifactInfo_WithValidMainProject() throws AssemblyFormattingException { @@ -313,6 +323,19 @@ verifyEvalFileNameMapping( "file.${artifact.extension}", null, null, null, null, "ext", "file.ext" ); } + public void testEvalFileNameMapping_ShouldResolveProjectProperty() throws AssemblyFormattingException + { + Properties props = new Properties(); + props.setProperty( "myProperty", "value" ); + + verifyEvalFileNameMapping( "file.${myProperty}", null, null, null, null, null, "file.value", null, true, props ); + } + + public void testEvalFileNameMapping_ShouldResolveSystemPropertyWithoutMainProjectPresent() throws AssemblyFormattingException + { + verifyEvalFileNameMapping( "file.${java.version}", null, null, null, null, null, "file." + System.getProperty( "java.version" ), "artifact.", false ); + } + private void verifyEvalFileNameMapping( String expression, String classifier, String groupId, String artifactId, String version, String extension, String checkValue ) throws AssemblyFormattingException @@ -331,6 +354,23 @@ String version, String extension, String checkValue, String prefix, boolean usingMainProject ) throws AssemblyFormattingException { + verifyEvalFileNameMapping( expression, + classifier, + groupId, + artifactId, + version, + extension, + checkValue, + prefix, + usingMainProject, + new Properties() ); + } + + private void verifyEvalFileNameMapping( String expression, String classifier, String groupId, String artifactId, + String version, String extension, String checkValue, String prefix, boolean usingMainProject, + Properties projectProperties ) + throws AssemblyFormattingException + { if ( artifactId == null ) { artifactId = "artifact"; @@ -357,6 +397,8 @@ model.setArtifactId( artifactId ); model.setVersion( version ); + model.setProperties( projectProperties ); + project = new MavenProject( model ); MavenProject mainProject; @@ -412,13 +454,24 @@ String projectFinalName, String checkValue, String prefix, boolean usingMainProject ) throws AssemblyFormattingException { + verifyOutputDir( outDir, finalName, groupId, artifactId, version, projectFinalName, checkValue, prefix, usingMainProject, new Properties() ); + } + + private void verifyOutputDir( String outDir, String finalName, String groupId, String artifactId, String version, + String projectFinalName, String checkValue, String prefix, boolean usingMainProject, + Properties projectProperties ) + throws AssemblyFormattingException + { MavenProject project = null; - if ( ( groupId != null ) || ( artifactId != null ) || ( version != null ) || ( projectFinalName != null ) ) + if ( ( groupId != null ) || ( artifactId != null ) || ( version != null ) + || ( projectFinalName != null ) || ( projectProperties != null ) ) { Model model = new Model(); model.setGroupId( groupId ); model.setArtifactId( artifactId ); model.setVersion( version ); + + model.setProperties( projectProperties ); if ( projectFinalName != null ) {