Author: bentmann Date: Mon May 3 10:53:06 2010 New Revision: 940414 URL: http://svn.apache.org/viewvc?rev=940414&view=rev Log: [MASSEMBLY-486] ComponentDescriptors to support absolute paths Submitted by: Michael Lawler
o Applied with minor formatting/modifications Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java?rev=940414&r1=940413&r2=940414&view=diff ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java (original) +++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java Mon May 3 10:53:06 2010 @@ -27,6 +27,7 @@ import org.apache.maven.plugin.assembly. import org.apache.maven.plugin.assembly.InvalidAssemblerConfigurationException; import org.apache.maven.plugin.assembly.interpolation.AssemblyInterpolationException; import org.apache.maven.plugin.assembly.interpolation.AssemblyInterpolator; +import org.apache.maven.plugin.assembly.interpolation.AssemblyExpressionEvaluator; import org.apache.maven.plugin.assembly.model.Assembly; import org.apache.maven.plugin.assembly.model.Component; import org.apache.maven.plugin.assembly.model.ContainerDescriptorHandlerConfig; @@ -422,7 +423,10 @@ public class DefaultAssemblyReader protected void mergeComponentsWithMainAssembly( Assembly assembly, AssemblerConfigurationSource configSource ) throws AssemblyReadException { - RelativeFileLocatorStrategy fls = new RelativeFileLocatorStrategy( configSource.getBasedir() ); + RelativeFileLocatorStrategy rfls = new RelativeFileLocatorStrategy( configSource.getBasedir() ); + + // allow absolute paths in componentDescriptor... MASSEMBLY-486 + FileLocatorStrategy afls = new FileLocatorStrategy(); ClasspathResourceLocatorStrategy crls = new ClasspathResourceLocatorStrategy(); @@ -434,16 +438,29 @@ public class DefaultAssemblyReader URLLocatorStrategy uls = new URLLocatorStrategy(); Locator locator = new Locator(); - locator.addStrategy( fls ); + locator.addStrategy( rfls ); + locator.addStrategy( afls ); locator.addStrategy( als ); locator.addStrategy( crls ); locator.addStrategy( uls ); + AssemblyExpressionEvaluator aee = new AssemblyExpressionEvaluator( configSource ); + List componentLocations = assembly.getComponentDescriptors(); for ( Iterator it = componentLocations.iterator(); it.hasNext(); ) { String location = (String) it.next(); + + // allow expressions in path to component descriptor... MASSEMBLY-486 + try + { + location = aee.evaluate( location ).toString(); + } + catch ( Exception eee ) + { + getLogger().error( "Error interpolating componentDescriptor: " + location, eee ); + } Location resolvedLocation = locator.resolve( location ); Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java?rev=940414&r1=940413&r2=940414&view=diff ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java (original) +++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java Mon May 3 10:53:06 2010 @@ -487,6 +487,12 @@ public class DefaultAssemblyReaderTest configSource.getBasedir(); configSourceControl.setReturnValue( basedir, MockControl.ZERO_OR_MORE ); + + + MavenProject project = new MavenProject(); + + configSource.getProject(); + configSourceControl.setReturnValue( project, MockControl.ZERO_OR_MORE ); mockManager.replayAll(); @@ -702,7 +708,6 @@ public class DefaultAssemblyReaderTest model.setVersion( "version" ); MavenProject project = new MavenProject( model ); - configSource.getProject(); configSourceControl.setReturnValue( project, MockControl.ZERO_OR_MORE ); @@ -776,7 +781,7 @@ public class DefaultAssemblyReaderTest MavenProject project = new MavenProject( model ); configSource.getProject(); - configSourceControl.setReturnValue( project ); + configSourceControl.setReturnValue( project, MockControl.ONE_OR_MORE ); configSource.isSiteIncluded(); configSourceControl.setReturnValue( false );