You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2011/12/22 23:15:29 UTC

svn commit: r1222490 - in /maven/plugins/trunk/maven-site-plugin: pom.xml src/main/java/org/apache/maven/plugins/site/SiteJarMojo.java

Author: olamy
Date: Thu Dec 22 22:15:29 2011
New Revision: 1222490

URL: http://svn.apache.org/viewvc?rev=1222490&view=rev
Log:
[MSITE-625] Please add an 'archive' parameter to the 'jar' goal of the 'maven-site-plugin'.
Submitted by Christian Schulte.

Modified:
    maven/plugins/trunk/maven-site-plugin/pom.xml
    maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteJarMojo.java

Modified: maven/plugins/trunk/maven-site-plugin/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-site-plugin/pom.xml?rev=1222490&r1=1222489&r2=1222490&view=diff
==============================================================================
--- maven/plugins/trunk/maven-site-plugin/pom.xml (original)
+++ maven/plugins/trunk/maven-site-plugin/pom.xml Thu Dec 22 22:15:29 2011
@@ -246,6 +246,12 @@ under the License.
       <version>${mavenVersion}</version>
     </dependency>
 
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-archiver</artifactId>
+      <version>2.4.2</version>
+    </dependency>
+
     <!-- Doxia -->
     <dependency>
       <groupId>org.apache.maven.doxia</groupId>

Modified: maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteJarMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteJarMojo.java?rev=1222490&r1=1222489&r2=1222490&view=diff
==============================================================================
--- maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteJarMojo.java (original)
+++ maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteJarMojo.java Thu Dec 22 22:15:29 2011
@@ -22,12 +22,16 @@ package org.apache.maven.plugins.site;
 import java.io.File;
 import java.io.IOException;
 
+import org.apache.maven.archiver.MavenArchiveConfiguration;
+import org.apache.maven.archiver.MavenArchiver;
+import org.apache.maven.artifact.DependencyResolutionRequiredException;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.project.MavenProjectHelper;
 
 import org.codehaus.plexus.archiver.ArchiverException;
 import org.codehaus.plexus.archiver.jar.JarArchiver;
+import org.codehaus.plexus.archiver.jar.ManifestException;
 
 /**
  * Bundles the site output into a JAR so that it can be deployed to a repository.
@@ -41,6 +45,10 @@ import org.codehaus.plexus.archiver.jar.
 public class SiteJarMojo
     extends SiteMojo
 {
+    private static final String[] DEFAULT_ARCHIVE_EXCLUDES = new String[]{};
+
+    private static final String[] DEFAULT_ARCHIVE_INCLUDES = new String[]{"**/**"};
+
     /**
      * Specifies the directory where the generated jar file will be put.
      *
@@ -73,6 +81,41 @@ public class SiteJarMojo
     private boolean attach;
 
     /**
+     * The Jar archiver.
+     *
+     * @component role="org.codehaus.plexus.archiver.Archiver" roleHint="jar"
+     * @since 3.1
+     */
+    private JarArchiver jarArchiver;
+
+    /**
+     * The archive configuration to use.
+     * See <a href="http://maven.apache.org/shared/maven-archiver/index.html">Maven Archiver Reference</a>.
+     *
+     * @parameter
+     * @since 3.1
+     */
+    private MavenArchiveConfiguration archive = new MavenArchiveConfiguration();
+
+    /**
+     * List of files to include. Specified as file set patterns which are relative to the input directory whose contents
+     * is being packaged into the JAR.
+     *
+     * @parameter
+     * @since 3.1
+     */
+    private String[] archiveIncludes;
+
+    /**
+     * List of files to exclude. Specified as file set patterns which are relative to the input directory whose contents
+     * is being packaged into the JAR.
+     *
+     * @parameter
+     * @since 3.1
+     */
+    private String[] archiveExcludes;
+
+    /**
      * @see org.apache.maven.plugin.Mojo#execute()
      */
     public void execute()
@@ -105,6 +148,14 @@ public class SiteJarMojo
         {
             throw new MojoExecutionException( "Error while creating archive.", e );
         }
+        catch ( ManifestException e )
+        {
+            throw new MojoExecutionException( "Error while creating archive.", e );
+        }
+        catch ( DependencyResolutionRequiredException e )
+        {
+            throw new MojoExecutionException( "Error while creating archive.", e );
+        }
     }
 
     protected String getArtifactType()
@@ -125,22 +176,50 @@ public class SiteJarMojo
      * @return a File object that contains the created jar file
      * @throws ArchiverException
      * @throws IOException
+     * @throws ManifestException
+     * @throws DependencyResolutionRequiredException
      */
     private File createArchive( File siteDirectory, String jarFilename )
-        throws ArchiverException, IOException
+        throws ArchiverException, IOException, ManifestException, DependencyResolutionRequiredException
     {
         File siteJar = new File( jarOutputDirectory, jarFilename );
 
-        if ( siteJar.exists() )
+        MavenArchiver archiver = new MavenArchiver();
+
+        archiver.setArchiver( this.jarArchiver );
+
+        archiver.setOutputFile( siteJar );
+
+        if ( !siteDirectory.isDirectory() )
         {
-            siteJar.delete();
+            getLog().warn( "JAR will be empty - no content was marked for inclusion !" );
+        }
+        else
+        {
+            archiver.getArchiver().addDirectory( siteDirectory, getArchiveIncludes(), getArchiveExcludes() );
         }
 
-        JarArchiver archiver = new JarArchiver();
-        archiver.addDirectory( siteDirectory );
-        archiver.setDestFile( siteJar );
-        archiver.createArchive();
+        archiver.createArchive( project, archive );
 
         return siteJar;
     }
+
+    private String[] getArchiveIncludes()
+    {
+        if ( this.archiveIncludes != null && this.archiveIncludes.length > 0 )
+        {
+            return this.archiveIncludes;
+        }
+
+        return DEFAULT_ARCHIVE_INCLUDES;
+    }
+
+    private String[] getArchiveExcludes()
+    {
+        if ( this.archiveExcludes != null && this.archiveExcludes.length > 0 )
+        {
+            return this.archiveExcludes;
+        }
+        return DEFAULT_ARCHIVE_EXCLUDES;
+    }
 }