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(); }