You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2010/09/21 22:41:30 UTC

svn commit: r999627 - in /maven/plugins/trunk/maven-assembly-plugin/src: it/projects/dependency-sets/depSet-byDepVersion/ it/projects/dependency-sets/depSet-byDepVersion/child1/ it/projects/dependency-sets/depSet-byDepVersion/child1/src/ it/projects/de...

Author: jdcasey
Date: Tue Sep 21 20:41:29 2010
New Revision: 999627

URL: http://svn.apache.org/viewvc?rev=999627&view=rev
Log:
[MASSEMBLY-435] Provide access to artifact properties for dependency artifacts and current module, for calculating both outputDirectory and outputFileNameMapping

Added:
    maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/
    maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child1/
    maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child1/pom.xml   (with props)
    maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child1/src/
    maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child1/src/main/
    maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child1/src/main/java/
    maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child1/src/main/java/test/
    maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child1/src/main/java/test/App.java   (with props)
    maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child2/
    maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child2/pom.xml   (with props)
    maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child2/src/
    maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child2/src/main/
    maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child2/src/main/java/
    maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child2/src/main/java/test/
    maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child2/src/main/java/test/App.java   (with props)
    maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child3/
    maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child3/pom.xml   (with props)
    maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child3/src/
    maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child3/src/main/
    maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child3/src/main/assembly/
    maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child3/src/main/assembly/bin.xml   (with props)
    maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/pom.xml   (with props)
    maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/verify.bsh   (with props)
Modified:
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child1/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child1/pom.xml?rev=999627&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child1/pom.xml (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child1/pom.xml Tue Sep 21 20:41:29 2010
@@ -0,0 +1,9 @@
+<?xml version="1.0"?><project>
+  <parent>
+    <artifactId>parent</artifactId>
+    <groupId>test</groupId>
+    <version>1</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>child1</artifactId>
+</project>

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child1/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child1/src/main/java/test/App.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child1/src/main/java/test/App.java?rev=999627&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child1/src/main/java/test/App.java (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child1/src/main/java/test/App.java Tue Sep 21 20:41:29 2010
@@ -0,0 +1,13 @@
+package test;
+
+/**
+ * Hello world!
+ *
+ */
+public class App 
+{
+    public static void main( String[] args )
+    {
+        System.out.println( "Hello World!" );
+    }
+}

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child1/src/main/java/test/App.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child2/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child2/pom.xml?rev=999627&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child2/pom.xml (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child2/pom.xml Tue Sep 21 20:41:29 2010
@@ -0,0 +1,13 @@
+<?xml version='1.0'?>
+<project>
+  <parent>
+    <artifactId>parent</artifactId>
+    <groupId>test</groupId>
+    <version>1</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>child2</artifactId>
+  <version>2</version>
+
+</project>
+

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child2/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child2/src/main/java/test/App.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child2/src/main/java/test/App.java?rev=999627&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child2/src/main/java/test/App.java (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child2/src/main/java/test/App.java Tue Sep 21 20:41:29 2010
@@ -0,0 +1,13 @@
+package test;
+
+/**
+ * Hello world!
+ *
+ */
+public class App 
+{
+    public static void main( String[] args )
+    {
+        System.out.println( "Hello World!" );
+    }
+}

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child2/src/main/java/test/App.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child3/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child3/pom.xml?rev=999627&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child3/pom.xml (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child3/pom.xml Tue Sep 21 20:41:29 2010
@@ -0,0 +1,54 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>test</groupId>
+    <artifactId>parent</artifactId>
+    <version>1</version>
+  </parent>
+    
+  <artifactId>child3</artifactId>
+
+  <name>DependencySet::By-Version</name>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>test</groupId>
+      <artifactId>child1</artifactId>
+      <version>1</version>
+      <scope>runtime</scope>
+    </dependency>
+    <dependency>
+      <groupId>test</groupId>
+      <artifactId>child2</artifactId>
+      <version>2</version>
+      <scope>runtime</scope>
+    </dependency>
+  </dependencies>
+  
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-assembly-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>assembly</id>
+            <phase>package</phase>
+            <goals>
+              <goal>single</goal>
+            </goals>
+            <configuration>
+              <descriptors>
+                <descriptor>src/main/assembly/bin.xml</descriptor>
+              </descriptors>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child3/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child3/src/main/assembly/bin.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child3/src/main/assembly/bin.xml?rev=999627&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child3/src/main/assembly/bin.xml (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child3/src/main/assembly/bin.xml Tue Sep 21 20:41:29 2010
@@ -0,0 +1,14 @@
+<assembly>
+  <id>bin</id>
+  <formats>
+    <format>dir</format>
+  </formats>
+  <includeBaseDirectory>false</includeBaseDirectory>
+  <dependencySets>
+    <dependencySet>
+      <scope>runtime</scope>
+      <useProjectArtifact>false</useProjectArtifact>
+      <outputDirectory>${artifact.baseVersion}</outputDirectory>
+    </dependencySet>
+  </dependencySets>
+</assembly>
\ No newline at end of file

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/child3/src/main/assembly/bin.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/pom.xml?rev=999627&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/pom.xml (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/pom.xml Tue Sep 21 20:41:29 2010
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.plugin.assembly.test</groupId>
+    <artifactId>it-project-parent</artifactId>
+    <version>1</version>
+  </parent>
+  
+  <groupId>test</groupId>
+  <artifactId>parent</artifactId>
+  <packaging>pom</packaging>
+  <version>1</version>
+  
+  <modules>
+    <module>child1</module>
+    <module>child2</module>
+    <module>child3</module>
+  </modules>
+</project>

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/verify.bsh
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/verify.bsh?rev=999627&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/verify.bsh (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/verify.bsh Tue Sep 21 20:41:29 2010
@@ -0,0 +1,28 @@
+import java.io.*;
+
+try
+{
+    File dir = new File( basedir, "child3/target/child3-1-bin" );
+    
+    File f = new File( dir, "1/child1-1.jar" );
+    if ( !f.exists() || !f.isFile() )
+    {
+      System.out.println( "Could not find dependency file: " + f );
+      return false;
+    }
+    
+    f = new File( dir, "2/child2-2.jar" );
+    if ( !f.exists() || !f.isFile() )
+    {
+      System.out.println( "Could not find dependency file: " + f );
+      return false;
+    }
+    
+    return true;
+}
+catch( IOException e )
+{
+    e.printStackTrace();
+}
+
+return false;

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/depSet-byDepVersion/verify.bsh
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java?rev=999627&r1=999626&r2=999627&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java Tue Sep 21 20:41:29 2010
@@ -361,7 +361,10 @@ public class AddDependencySetsTask
 
         model.setDescription( "Stub for " + depArtifact.getId() );
 
-        return new MavenProject( model );
+        final MavenProject project = new MavenProject( model );
+        project.setArtifact( depArtifact );
+
+        return project;
     }
 
     protected Set<Artifact> resolveDependencyArtifacts( final DependencySet dependencySet )

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=999627&r1=999626&r2=999627&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 Tue Sep 21 20:41:29 2010
@@ -19,10 +19,6 @@ package org.apache.maven.plugin.assembly
  * under the License.
  */
 
-import java.io.IOException;
-import java.util.Collections;
-import java.util.Properties;
-
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
@@ -36,27 +32,31 @@ import org.codehaus.plexus.interpolation
 import org.codehaus.plexus.interpolation.StringSearchInterpolator;
 import org.codehaus.plexus.util.StringUtils;
 
+import java.io.IOException;
+import java.util.Collections;
+import java.util.Properties;
+
 /**
  * @version $Id$
  */
 public final class AssemblyFormatUtils
 {
-    
+
     private AssemblyFormatUtils()
     {
     }
 
     /**
      * Get the full name of the distribution artifact
-     *
+     * 
      * @param assembly
      * @return the distribution name
      */
-    public static String getDistributionName( Assembly assembly, AssemblerConfigurationSource configSource )
+    public static String getDistributionName( final Assembly assembly, final AssemblerConfigurationSource configSource )
     {
-        String finalName = configSource.getFinalName();
-        boolean appendAssemblyId = configSource.isAssemblyIdAppended();
-        String classifier = configSource.getClassifier();
+        final String finalName = configSource.getFinalName();
+        final boolean appendAssemblyId = configSource.isAssemblyIdAppended();
+        final String classifier = configSource.getClassifier();
 
         String distributionName = finalName;
         if ( appendAssemblyId )
@@ -75,18 +75,21 @@ public final class AssemblyFormatUtils
     }
 
     /**
-     * @deprecated Use {@link AssemblyFormatUtils#getOutputDirectory(String, MavenProject, MavenProject, String, AssemblerConfigurationSource)}
-     * instead.
+     * @deprecated Use
+     *             {@link AssemblyFormatUtils#getOutputDirectory(String, MavenProject, MavenProject, String, AssemblerConfigurationSource)}
+     *             instead.
      */
-    public static String getOutputDirectory( String output, MavenProject mainProject, MavenProject artifactProject,
-                                             String finalName )
+    @Deprecated
+    public static String getOutputDirectory( final String output, final MavenProject mainProject,
+                                             final MavenProject artifactProject, final String finalName )
         throws AssemblyFormattingException
     {
         return getOutputDirectory( output, mainProject, null, artifactProject, finalName, null );
     }
 
-    public static String getOutputDirectory( String output, MavenProject mainProject, MavenProject artifactProject,
-                                             String finalName, AssemblerConfigurationSource configSource )
+    public static String getOutputDirectory( final String output, final MavenProject mainProject,
+                                             final MavenProject artifactProject, final String finalName,
+                                             final AssemblerConfigurationSource configSource )
         throws AssemblyFormattingException
     {
         return getOutputDirectory( output, mainProject, null, artifactProject, finalName, configSource );
@@ -95,28 +98,32 @@ public final class AssemblyFormatUtils
     /**
      * ORDER OF INTERPOLATION PRECEDENCE:
      * <ol>
-     * <li> Support for special expressions, like ${finalName} (use the assembly plugin configuration not the build config)</li>
-     * <li> prefixed with "module." if moduleProject is non-null
-     *    <ol><li>MavenProject instance for module being assembled</li></ol>
+     * <li>Support for special expressions, like ${finalName} (use the assembly plugin configuration not the build
+     * config)</li>
+     * <li>prefixed with "module." if moduleProject is non-null
+     * <ol>
+     * <li>MavenProject instance for module being assembled</li>
+     * </ol>
      * </li>
      * <li>prefixed with "artifact." if artifactProject is non-null
-     *    <ol><li>MavenProject instance for artifact</li></ol>
+     * <ol>
+     * <li>MavenProject instance for artifact</li>
+     * </ol>
      * </li>
      * <li>user-defined properties from the command line</li>
      * <li>prefixed with "pom." or "project.", or no prefix at all
-     *    <ol><li>MavenProject instance from current build</li></ol>
+     * <ol>
+     * <li>MavenProject instance from current build</li>
+     * </ol>
      * </li>
      * <li>properties from main project</li>
      * <li>system properties, from the MavenSession instance (to support IDEs)</li>
      * <li>environment variables.</li>
      * </ol>
      */
-    public static String getOutputDirectory( String output, 
-                                             MavenProject mainProject, 
-                                             MavenProject moduleProject,
-                                             MavenProject artifactProject,
-                                             String finalName,
-                                             AssemblerConfigurationSource configSource )
+    public static String getOutputDirectory( final String output, final MavenProject mainProject,
+                                             final MavenProject moduleProject, final MavenProject artifactProject,
+                                             final String finalName, final AssemblerConfigurationSource configSource )
         throws AssemblyFormattingException
     {
         String value = output;
@@ -125,9 +132,9 @@ public final class AssemblyFormatUtils
             value = "";
         }
 
-        StringSearchInterpolator interpolator = new StringSearchInterpolator();
+        final StringSearchInterpolator interpolator = new StringSearchInterpolator();
 
-        Properties specialExpressionOverrides = new Properties();
+        final Properties specialExpressionOverrides = new Properties();
 
         if ( finalName != null )
         {
@@ -137,21 +144,29 @@ public final class AssemblyFormatUtils
 
         // 1
         interpolator.addValueSource( new PropertiesBasedValueSource( specialExpressionOverrides ) );
-        
+
         if ( moduleProject != null )
         {
             // 2
             interpolator.addValueSource( new PrefixedObjectValueSource( "module.", moduleProject ) );
+            if ( moduleProject.getArtifact() != null )
+            {
+                interpolator.addValueSource( new PrefixedObjectValueSource( "module.", moduleProject.getArtifact() ) );
+            }
         }
 
         if ( artifactProject != null )
         {
             // 3
             interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.", artifactProject ) );
+            if ( artifactProject.getArtifact() != null )
+            {
+                interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.", artifactProject.getArtifact() ) );
+            }
         }
 
         MavenSession session = null;
-        
+
         if ( configSource != null )
         {
             session = configSource.getMavenSession();
@@ -163,11 +178,11 @@ public final class AssemblyFormatUtils
                 {
                     userProperties = session.getExecutionProperties();
                 }
-                catch ( NoSuchMethodError nsmer )
+                catch ( final NoSuchMethodError nsmer )
                 {
                     // OK, so user is using Maven <= 2.0.8. No big deal.
                 }
-                
+
                 if ( userProperties != null )
                 {
                     // 4
@@ -175,14 +190,17 @@ public final class AssemblyFormatUtils
                 }
             }
         }
-        
+
         if ( mainProject != null )
         {
             // 5
-            interpolator.addValueSource( new PrefixedObjectValueSource( InterpolationConstants.PROJECT_PREFIXES, mainProject, true ) );
-            
+            interpolator.addValueSource( new PrefixedObjectValueSource( InterpolationConstants.PROJECT_PREFIXES,
+                                                                        mainProject, true ) );
+
             // 6
-            interpolator.addValueSource( new PrefixedPropertiesValueSource( InterpolationConstants.PROJECT_PROPERTIES_PREFIXES, mainProject.getProperties(), true ) );
+            interpolator.addValueSource( new PrefixedPropertiesValueSource(
+                                                                            InterpolationConstants.PROJECT_PROPERTIES_PREFIXES,
+                                                                            mainProject.getProperties(), true ) );
         }
 
         Properties commandLineProperties = System.getProperties();
@@ -194,31 +212,35 @@ public final class AssemblyFormatUtils
             }
 
         }
-        catch ( NoSuchMethodError nsmer )
+        catch ( final NoSuchMethodError nsmer )
         {
             // OK, so user is using Maven <= 2.0.8. No big deal.
         }
-        
+
         // 7
         interpolator.addValueSource( new PropertiesBasedValueSource( commandLineProperties ) );
 
         try
         {
             // 8
-            interpolator.addValueSource( new PrefixedPropertiesValueSource( Collections.singletonList( "env." ), CommandLineUtils.getSystemEnvVars( false ), true ) );
+            interpolator.addValueSource( new PrefixedPropertiesValueSource( Collections.singletonList( "env." ),
+                                                                            CommandLineUtils.getSystemEnvVars( false ),
+                                                                            true ) );
         }
-        catch ( IOException e )
+        catch ( final IOException e )
         {
-            throw new AssemblyFormattingException( "Failed to retrieve OS environment variables. Reason: " + e.getMessage(), e );
+            throw new AssemblyFormattingException( "Failed to retrieve OS environment variables. Reason: "
+                            + e.getMessage(), e );
         }
 
         try
         {
             value = interpolator.interpolate( value );
         }
-        catch ( InterpolationException e )
+        catch ( final InterpolationException e )
         {
-            throw new AssemblyFormattingException( "Failed to interpolate output directory. Reason: " + e.getMessage(), e );
+            throw new AssemblyFormattingException( "Failed to interpolate output directory. Reason: " + e.getMessage(),
+                                                   e );
         }
 
         if ( ( value.length() > 0 ) && !value.endsWith( "/" ) && !value.endsWith( "\\" ) )
@@ -230,7 +252,7 @@ public final class AssemblyFormatUtils
         {
             value = value.substring( 1 );
         }
-        
+
         value = StringUtils.replace( value, "//", "/" );
         value = StringUtils.replace( value, "\\\\", "\\" );
         value = StringUtils.replace( value, "./", "" );
@@ -240,19 +262,21 @@ public final class AssemblyFormatUtils
     }
 
     /**
-     * @deprecated Use {@link AssemblyFormatUtils#evaluateFileNameMapping(String, Artifact, MavenProject, MavenProject, AssemblerConfigurationSource)}
-     * instead.
+     * @deprecated Use
+     *             {@link AssemblyFormatUtils#evaluateFileNameMapping(String, Artifact, MavenProject, MavenProject, AssemblerConfigurationSource)}
+     *             instead.
      */
-    public static String evaluateFileNameMapping( String expression, Artifact artifact, MavenProject mainProject,
-                                                  MavenProject artifactProject )
+    @Deprecated
+    public static String evaluateFileNameMapping( final String expression, final Artifact artifact,
+                                                  final MavenProject mainProject, final MavenProject artifactProject )
         throws AssemblyFormattingException
     {
         return evaluateFileNameMapping( expression, artifact, mainProject, null, null, artifactProject, null );
     }
 
-    public static String evaluateFileNameMapping( String expression, Artifact artifact, MavenProject mainProject,
-                                                  MavenProject artifactProject,
-                                                  AssemblerConfigurationSource configSource )
+    public static String evaluateFileNameMapping( final String expression, final Artifact artifact,
+                                                  final MavenProject mainProject, final MavenProject artifactProject,
+                                                  final AssemblerConfigurationSource configSource )
         throws AssemblyFormattingException
     {
         return evaluateFileNameMapping( expression, artifact, mainProject, null, null, artifactProject, configSource );
@@ -262,24 +286,28 @@ public final class AssemblyFormatUtils
      * ORDER OF INTERPOLATION PRECEDENCE:
      * <ol>
      * <li>prefixed with "module.", if moduleProject != null
-     *    <ol>
-     *    <li>Artifact instance for module, if moduleArtifact != null</li>
-     *    <li>ArtifactHandler instance for module, if moduleArtifact != null</li>
-     *    <li>MavenProject instance for module</li>
-     *    </ol>
+     * <ol>
+     * <li>Artifact instance for module, if moduleArtifact != null</li>
+     * <li>ArtifactHandler instance for module, if moduleArtifact != null</li>
+     * <li>MavenProject instance for module</li>
+     * </ol>
      * </li>
      * <li>prefixed with "artifact."
-     *    <ol>
-     *    <li>Artifact instance</li>
-     *    <li>ArtifactHandler instance for artifact</li>
-     *    <li>MavenProject instance for artifact</li>
-     *    </ol>
+     * <ol>
+     * <li>Artifact instance</li>
+     * <li>ArtifactHandler instance for artifact</li>
+     * <li>MavenProject instance for artifact</li>
+     * </ol>
      * </li>
      * <li>prefixed with "pom." or "project."
-     *    <ol><li>MavenProject instance from current build</li></ol>
+     * <ol>
+     * <li>MavenProject instance from current build</li>
+     * </ol>
      * </li>
      * <li>no prefix, using main project instance
-     *    <ol><li>MavenProject instance from current build</li></ol>
+     * <ol>
+     * <li>MavenProject instance from current build</li>
+     * </ol>
      * </li>
      * <li>Support for special expressions, like ${dashClassifier?}</li>
      * <li>user-defined properties from the command line</li>
@@ -288,11 +316,10 @@ public final class AssemblyFormatUtils
      * <li>environment variables.</li>
      * </ol>
      */
-    public static String evaluateFileNameMapping( String expression, Artifact artifact, MavenProject mainProject,
-                                                  MavenProject moduleProject,
-                                                  Artifact moduleArtifact,
-                                                  MavenProject artifactProject, 
-                                                  AssemblerConfigurationSource configSource )
+    public static String evaluateFileNameMapping( final String expression, final Artifact artifact,
+                                                  final MavenProject mainProject, final MavenProject moduleProject,
+                                                  final Artifact moduleArtifact, final MavenProject artifactProject,
+                                                  final AssemblerConfigurationSource configSource )
         throws AssemblyFormattingException
     {
         String value = expression;
@@ -301,22 +328,27 @@ public final class AssemblyFormatUtils
         // [jdcasey; 16-Aug-1007] This is fixed in SVN, just waiting for it to pass out of legacy.
         artifact.isSnapshot();
 
-        StringSearchInterpolator interpolator = new StringSearchInterpolator();
+        final StringSearchInterpolator interpolator = new StringSearchInterpolator();
 
         if ( moduleArtifact != null )
         {
             // 1A
             interpolator.addValueSource( new PrefixedObjectValueSource( "module.", moduleArtifact ) );
-            
+
             // 1B
             interpolator.addValueSource( new PrefixedObjectValueSource( "module.", moduleArtifact.getArtifactHandler() ) );
-            interpolator.addValueSource( new PrefixedObjectValueSource( "module.handler.", moduleArtifact.getArtifactHandler() ) );
+            interpolator.addValueSource( new PrefixedObjectValueSource( "module.handler.",
+                                                                        moduleArtifact.getArtifactHandler() ) );
         }
-        
+
         // 1C
         if ( moduleProject != null )
         {
             interpolator.addValueSource( new PrefixedObjectValueSource( "module.", moduleProject ) );
+            if ( moduleProject.getArtifact() != null )
+            {
+                interpolator.addValueSource( new PrefixedObjectValueSource( "module.", moduleProject.getArtifact() ) );
+            }
         }
 
         // 2A
@@ -330,22 +362,27 @@ public final class AssemblyFormatUtils
         if ( artifactProject != null )
         {
             interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.", artifactProject ) );
+            if ( artifactProject.getArtifact() != null )
+            {
+                interpolator.addValueSource( new PrefixedObjectValueSource( "artifact.", artifactProject.getArtifact() ) );
+            }
         }
 
         if ( mainProject != null )
         {
             // 3
             // 4
-            interpolator.addValueSource( new PrefixedObjectValueSource( InterpolationConstants.PROJECT_PREFIXES, mainProject, true ) );
+            interpolator.addValueSource( new PrefixedObjectValueSource( InterpolationConstants.PROJECT_PREFIXES,
+                                                                        mainProject, true ) );
         }
 
-        Properties specialRules = new Properties();
+        final Properties specialRules = new Properties();
 
-        String classifier = artifact.getClassifier();
+        final String classifier = artifact.getClassifier();
         if ( classifier != null )
         {
-            specialRules.setProperty( "dashClassifier?",  "-" + classifier );
-            specialRules.setProperty( "dashClassifier",  "-" + classifier );
+            specialRules.setProperty( "dashClassifier?", "-" + classifier );
+            specialRules.setProperty( "dashClassifier", "-" + classifier );
         }
         else
         {
@@ -368,11 +405,11 @@ public final class AssemblyFormatUtils
                 {
                     userProperties = session.getExecutionProperties();
                 }
-                catch ( NoSuchMethodError nsmer )
+                catch ( final NoSuchMethodError nsmer )
                 {
                     // OK, so user is using Maven <= 2.0.8. No big deal.
                 }
-                
+
                 if ( userProperties != null )
                 {
                     // 6
@@ -380,11 +417,13 @@ public final class AssemblyFormatUtils
                 }
             }
         }
-        
+
         if ( mainProject != null )
         {
             // 7
-            interpolator.addValueSource( new PrefixedPropertiesValueSource( InterpolationConstants.PROJECT_PROPERTIES_PREFIXES, mainProject.getProperties(), true ) );
+            interpolator.addValueSource( new PrefixedPropertiesValueSource(
+                                                                            InterpolationConstants.PROJECT_PROPERTIES_PREFIXES,
+                                                                            mainProject.getProperties(), true ) );
         }
 
         Properties commandLineProperties = System.getProperties();
@@ -396,38 +435,42 @@ public final class AssemblyFormatUtils
             }
 
         }
-        catch ( NoSuchMethodError nsmer )
+        catch ( final NoSuchMethodError nsmer )
         {
             // OK, so user is using Maven <= 2.0.8. No big deal.
         }
-        
+
         // 8
         interpolator.addValueSource( new PropertiesBasedValueSource( commandLineProperties ) );
 
         try
         {
             // 9
-            interpolator.addValueSource( new PrefixedPropertiesValueSource( Collections.singletonList( "env." ), CommandLineUtils.getSystemEnvVars( false ), true ) );
+            interpolator.addValueSource( new PrefixedPropertiesValueSource( Collections.singletonList( "env." ),
+                                                                            CommandLineUtils.getSystemEnvVars( false ),
+                                                                            true ) );
         }
-        catch ( IOException e )
+        catch ( final IOException e )
         {
-            throw new AssemblyFormattingException( "Failed to retrieve OS environment variables. Reason: " + e.getMessage(), e );
+            throw new AssemblyFormattingException( "Failed to retrieve OS environment variables. Reason: "
+                            + e.getMessage(), e );
         }
 
         try
         {
             value = interpolator.interpolate( value );
         }
-        catch ( InterpolationException e )
+        catch ( final InterpolationException e )
         {
-            throw new AssemblyFormattingException( "Failed to interpolate output filename mapping. Reason: " + e.getMessage(), e );
+            throw new AssemblyFormattingException( "Failed to interpolate output filename mapping. Reason: "
+                            + e.getMessage(), e );
         }
 
         value = StringUtils.replace( value, "//", "/" );
         value = StringUtils.replace( value, "\\\\", "\\" );
         value = StringUtils.replace( value, "./", "" );
         value = StringUtils.replace( value, ".\\", "" );
-        
+
         return value;
     }