You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2006/01/03 09:35:52 UTC
svn commit: r365579 - in /maven/plugins/trunk/maven-assembly-plugin: pom.xml
src/main/java/org/apache/maven/plugin/assembly/AbstractAssemblyMojo.java
Author: brett
Date: Tue Jan 3 00:35:46 2006
New Revision: 365579
URL: http://svn.apache.org/viewcvs?rev=365579&view=rev
Log:
PR: MASSEMBLY-1
allow specification of a manifest for jar/war assemblies
Modified:
maven/plugins/trunk/maven-assembly-plugin/pom.xml
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractAssemblyMojo.java
Modified: maven/plugins/trunk/maven-assembly-plugin/pom.xml
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-assembly-plugin/pom.xml?rev=365579&r1=365578&r2=365579&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/pom.xml (original)
+++ maven/plugins/trunk/maven-assembly-plugin/pom.xml Tue Jan 3 00:35:46 2006
@@ -48,6 +48,11 @@
<artifactId>maven-project</artifactId>
</dependency>
<dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-archiver</artifactId>
+ <version>2.0</version>
+ </dependency>
+ <dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-archiver</artifactId>
<version>1.0-alpha-4</version>
Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractAssemblyMojo.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractAssemblyMojo.java?rev=365579&r1=365578&r2=365579&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractAssemblyMojo.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractAssemblyMojo.java Tue Jan 3 00:35:46 2006
@@ -16,7 +16,10 @@
* limitations under the License.
*/
+import org.apache.maven.archiver.MavenArchiveConfiguration;
+import org.apache.maven.archiver.MavenArchiver;
import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.DependencyResolutionRequiredException;
import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter;
@@ -33,6 +36,9 @@
import org.apache.maven.project.MavenProjectHelper;
import org.codehaus.plexus.archiver.Archiver;
import org.codehaus.plexus.archiver.ArchiverException;
+import org.codehaus.plexus.archiver.jar.JarArchiver;
+import org.codehaus.plexus.archiver.jar.Manifest;
+import org.codehaus.plexus.archiver.jar.ManifestException;
import org.codehaus.plexus.archiver.manager.NoSuchArchiverException;
import org.codehaus.plexus.archiver.tar.TarArchiver;
import org.codehaus.plexus.archiver.war.WarArchiver;
@@ -149,6 +155,11 @@
private ComponentsXmlArchiverFileFilter componentsXmlFilter = new ComponentsXmlArchiverFileFilter();
/**
+ * @parameter
+ */
+ private MavenArchiveConfiguration archive;
+
+ /**
* Create the binary distribution.
*
* @throws org.apache.maven.plugin.MojoExecutionException
@@ -235,6 +246,34 @@
componentsXmlFilter.addToArchive( archiver );
File destFile = new File( outputDirectory, filename );
+
+ if ( archiver instanceof JarArchiver )
+ {
+ // TODO: I'd really prefer to rewrite MavenArchiver as either a separate manifest creation utility (and to
+ // create an include pom.properties etc into another archiver), or an implementation of an archiver
+ // (the first is preferable).
+ MavenArchiver mavenArchiver = new MavenArchiver();
+
+ if ( archive != null && archive.getManifest() != null )
+ {
+ try
+ {
+ Manifest manifest = mavenArchiver.getManifest( project, archive.getManifest() );
+
+ JarArchiver jarArchiver = (JarArchiver) archiver;
+ jarArchiver.addConfiguredManifest( manifest );
+ }
+ catch ( ManifestException e )
+ {
+ throw new MojoExecutionException( "Error creating manifest: " + e.getMessage(), e );
+ }
+ catch ( DependencyResolutionRequiredException e )
+ {
+ throw new MojoExecutionException( "Dependencies were not resolved: " + e.getMessage(), e );
+ }
+ }
+ }
+
archiver.setDestFile( destFile );
archiver.createArchive();