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