Author: dennisl
Date: Wed Feb 11 16:28:01 2009
New Revision: 743374

URL: http://svn.apache.org/viewvc?rev=743374&view=rev
Log:
[MWAR-163] The outputFilenameMapping does not apply to the artifact of the 
current project
Submitted by: Michael McCallum
Reviewed by: Dennis Lundberg

o Needed to catch an exception, that wasn't handled by the patch
o Reformated the code to our style

Modified:
    
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/AbstractWarMojo.java
    
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/ClassesPackagingTask.java
    
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarPackagingContext.java

Modified: 
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/AbstractWarMojo.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/AbstractWarMojo.java?rev=743374&r1=743373&r2=743374&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/AbstractWarMojo.java
 (original)
+++ 
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/AbstractWarMojo.java
 Wed Feb 11 16:28:01 2009
@@ -28,6 +28,7 @@
 import java.util.List;
 
 import org.apache.maven.archiver.MavenArchiveConfiguration;
+import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.Resource;
 import org.apache.maven.plugin.AbstractMojo;
@@ -175,6 +176,13 @@
     private boolean useCache = true;
 
     /**
+     * @component role="org.apache.maven.artifact.factory.ArtifactFactory"
+     * @required
+     * @readonly
+     */
+    private ArtifactFactory artifactFactory;
+
+    /**
      * To look up Archiver/UnArchiver implementations
      *
      * @component role="org.codehaus.plexus.archiver.manager.ArchiverManager"
@@ -274,22 +282,22 @@
      * @since 2.1-alpha-2
      */
     private boolean filteringDeploymentDescriptors = false;
-    
+
     /**
-     * To escape interpolated value with windows path 
+     * To escape interpolated value with windows path
      * c:\foo\bar will be replaced with c:\\foo\\bar
      * @parameter expression="${maven.war.escapedBackslashesInFilePath}" 
default-value="false"
      * @since 2.1-alpha-2
-     */    
+     */
     private boolean escapedBackslashesInFilePath = false;
-    
+
     /**
-     * Expression preceded with the String won't be interpolated 
+     * Expression preceded with the String won't be interpolated
      * \${foo} will be replaced with ${foo}
      * @parameter expression="${maven.war.escapeString}"
      * @since 2.1-beta-1
-     */    
-    protected String escapeString;    
+     */
+    protected String escapeString;
 
     /**
      * The archive configuration to use.
@@ -428,11 +436,11 @@
         {
             MavenResourcesExecution mavenResourcesExecution = new 
MavenResourcesExecution();
             mavenResourcesExecution.setEscapeString( escapeString );
-             
+
             defaultFilterWrappers = mavenFileFilter.getDefaultFilterWrappers( 
project, filters,
                                                                                
    escapedBackslashesInFilePath,
                                                                                
    this.session, mavenResourcesExecution );
-            
+
         }
         catch ( MavenFilteringException e )
         {
@@ -443,7 +451,8 @@
         final WarPackagingContext context = new DefaultWarPackagingContext( 
webappDirectory, cache, overlayManager,
                                                                             
defaultFilterWrappers,
                                                                             
getNonFilteredFileExtensions(),
-                                                                            
filteringDeploymentDescriptors );
+                                                                            
filteringDeploymentDescriptors,
+                                                                            
this.artifactFactory);
         final Iterator it = packagingTasks.iterator();
         while ( it.hasNext() )
         {
@@ -523,6 +532,7 @@
         implements WarPackagingContext
     {
 
+        private final ArtifactFactory artifactFactory;
 
         private final WebappStructure webappStructure;
 
@@ -538,12 +548,14 @@
 
         public DefaultWarPackagingContext( File webappDirectory, final 
WebappStructure webappStructure,
                                            final OverlayManager 
overlayManager, List filterWrappers,
-                                           List nonFilteredFileExtensions, 
boolean filteringDeploymentDescriptors )
+                                           List nonFilteredFileExtensions, 
boolean filteringDeploymentDescriptors,
+                                           ArtifactFactory artifactFactory )
         {
             this.webappDirectory = webappDirectory;
             this.webappStructure = webappStructure;
             this.overlayManager = overlayManager;
             this.filterWrappers = filterWrappers;
+            this.artifactFactory = artifactFactory;
             this.filteringDeploymentDescriptors = 
filteringDeploymentDescriptors;
             this.nonFilteredFileExtensions = nonFilteredFileExtensions == null 
? Collections.EMPTY_LIST
                                                                               
: nonFilteredFileExtensions;
@@ -657,6 +669,10 @@
             return filteringDeploymentDescriptors;
         }
 
+        public ArtifactFactory getArtifactFactory() {
+            return this.artifactFactory;
+        }
+
     }
 
     public MavenProject getProject()
@@ -849,4 +865,12 @@
     {
         this.nonFilteredFileExtensions = nonFilteredFileExtensions;
     }
+
+    public ArtifactFactory getArtifactFactory() {
+        return this.artifactFactory;
+    }
+
+    public void setArtifactFactory(ArtifactFactory artifactFactory) {
+        this.artifactFactory = artifactFactory;
+    }
 }

Modified: 
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/ClassesPackagingTask.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/ClassesPackagingTask.java?rev=743374&r1=743373&r2=743374&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/ClassesPackagingTask.java
 (original)
+++ 
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/ClassesPackagingTask.java
 Wed Feb 11 16:28:01 2009
@@ -19,11 +19,14 @@
  * under the License.
  */
 
-
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.war.Overlay;
 import org.apache.maven.plugin.war.util.ClassesPackager;
 import org.apache.maven.plugin.war.util.PathSet;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.interpolation.InterpolationException;
 
 import java.io.File;
 import java.io.IOException;
@@ -36,7 +39,7 @@
  * within the <tt>WEB-INF/lib</tt> directory.
  *
  * @author Stephane Nicoll
- * 
+ *
  * @version $Id$
  */
 public class ClassesPackagingTask
@@ -78,18 +81,30 @@
     protected void generateJarArchive( WarPackagingContext context )
         throws MojoExecutionException
     {
-        //TODO use ArtifactFactory and resolve the final name the usual way 
instead
-        final String archiveName = 
context.getProject().getBuild().getFinalName() + ".jar";
+        MavenProject project = context.getProject();
+        ArtifactFactory factory = context.getArtifactFactory();
+        Artifact artifact = factory.createBuildArtifact( project.getGroupId(), 
project.getArtifactId(),
+                                                         project.getVersion(), 
"jar" );
+        String archiveName = null;
+        try
+        {
+            archiveName = getArtifactFinalName( context, artifact );
+        }
+        catch ( InterpolationException e )
+        {
+            throw new MojoExecutionException(
+                "Could not get the final name of the artifact[" + 
artifact.getGroupId() + ":" +
+                    artifact.getArtifactId() + ":" + artifact.getVersion() + 
"]", e );
+        }
         final String targetFilename = LIB_PATH + archiveName;
 
         if ( context.getWebappStructure().registerFile( 
Overlay.currentProjectInstance().getId(), targetFilename ) )
         {
-
             final File libDirectory = new File( context.getWebappDirectory(), 
LIB_PATH );
             final File jarFile = new File( libDirectory, archiveName );
             final ClassesPackager packager = new ClassesPackager();
             packager.packageClasses( context.getClassesDirectory(), jarFile, 
context.getJarArchiver(),
-                                     context.getProject(), 
context.getArchive() );
+                                     project, context.getArchive() );
         }
         else
         {

Modified: 
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarPackagingContext.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarPackagingContext.java?rev=743374&r1=743373&r2=743374&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarPackagingContext.java
 (original)
+++ 
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarPackagingContext.java
 Wed Feb 11 16:28:01 2009
@@ -23,6 +23,7 @@
 import java.util.List;
 
 import org.apache.maven.archiver.MavenArchiveConfiguration;
+import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.plugin.war.util.WebappStructure;
 import org.apache.maven.project.MavenProject;
@@ -183,4 +184,6 @@
     boolean isNonFilteredExtension( String fileName );
     
     boolean isFilteringDeploymentDescriptors();
+    
+    ArtifactFactory getArtifactFactory();
 }


Reply via email to