You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by br...@apache.org on 2005/10/03 06:12:37 UTC

svn commit: r293232 - in /maven/components/trunk/maven-plugins/maven-assembly-plugin: pom.xml src/main/java/org/apache/maven/plugin/assembly/AssemblyMojo.java

Author: brett
Date: Sun Oct  2 21:12:30 2005
New Revision: 293232

URL: http://svn.apache.org/viewcvs?rev=293232&view=rev
Log:
better exception handling

Modified:
    maven/components/trunk/maven-plugins/maven-assembly-plugin/pom.xml
    maven/components/trunk/maven-plugins/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AssemblyMojo.java

Modified: maven/components/trunk/maven-plugins/maven-assembly-plugin/pom.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-assembly-plugin/pom.xml?rev=293232&r1=293231&r2=293232&view=diff
==============================================================================
--- maven/components/trunk/maven-plugins/maven-assembly-plugin/pom.xml (original)
+++ maven/components/trunk/maven-plugins/maven-assembly-plugin/pom.xml Sun Oct  2 21:12:30 2005
@@ -2,13 +2,16 @@
   <parent>
     <artifactId>maven-plugin-parent</artifactId>
     <groupId>org.apache.maven.plugins</groupId>
-    <version>2.0-beta-1</version>
+    <version>2.0-beta-3-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>maven-assembly-plugin</artifactId>
   <packaging>maven-plugin</packaging>
   <name>Maven Assembly Plugin</name>
   <version>2.0-beta-2-SNAPSHOT</version>
+  <prerequisites>
+    <maven>2.0-beta-3-SNAPSHOT</maven>
+  </prerequisites>
   <developers>
     <developer>
       <id>vsiveton</id>

Modified: maven/components/trunk/maven-plugins/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AssemblyMojo.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AssemblyMojo.java?rev=293232&r1=293231&r2=293232&view=diff
==============================================================================
--- maven/components/trunk/maven-plugins/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AssemblyMojo.java (original)
+++ maven/components/trunk/maven-plugins/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AssemblyMojo.java Sun Oct  2 21:12:30 2005
@@ -23,6 +23,7 @@
 import org.apache.maven.artifact.resolver.filter.IncludesArtifactFilter;
 import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugins.assembly.model.Assembly;
 import org.apache.maven.plugins.assembly.model.DependencySet;
 import org.apache.maven.plugins.assembly.model.FileSet;
@@ -49,6 +50,7 @@
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.Reader;
+import java.io.FileNotFoundException;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -57,16 +59,16 @@
 
 /**
  * Assemble an application bundle or distribution from an assembly descriptor.
- * 
- * @goal assembly
- * @description Assemble an application bundle or distribution from an assembly descriptor.
+ *
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
  * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
  * @version $Id$
+ * @goal assembly
+ * @description Assemble an application bundle or distribution from an assembly descriptor.
  * @requiresDependencyResolution test
  * @requiresDirectInvocation
  * @execute phase="package"
- * @aggregator 
+ * @aggregator
  */
 public class AssemblyMojo
     extends AbstractUnpackingMojo
@@ -75,14 +77,14 @@
     /**
      * Predefined Assembly Descriptor Id's.  You can select bin, jar-with-dependencies, or src.
      *
-     * @parameter expression="${maven.assembly.descriptorId}"
+     * @parameter expression="${descriptorId}"
      */
     protected String descriptorId;
 
     /**
      * Assembly XML Descriptor file.  This must be the path to your customized descriptor file.
      *
-     * @parameter expression="${maven.assembly.descriptor}"
+     * @parameter expression="${descriptor}"
      */
     protected File descriptor;
 
@@ -107,9 +109,7 @@
     /**
      * Maven ProjectHelper
      *
-     * @parameter expression="${component.org.apache.maven.project.MavenProjectHelper}"
-     * @required
-     * @readonly
+     * @component
      */
     private MavenProjectHelper projectHelper;
 
@@ -128,30 +128,29 @@
      * @throws MojoExecutionException
      */
     public void execute()
-        throws MojoExecutionException
+        throws MojoExecutionException, MojoFailureException
     {
-        try
-        {
-            doExecute();
-        }
-        catch ( Exception e )
-        {
-            // TODO: don't catch exception
-            throw new MojoExecutionException( "Error creating assembly", e );
-        }
+        doExecute();
     }
 
     /**
      * Create the binary distribution.
      */
     private void doExecute()
-        throws ArchiverException, IOException, MojoExecutionException, XmlPullParserException
+        throws MojoExecutionException, MojoFailureException
     {
         Reader r;
 
         if ( descriptor != null )
         {
-            r = new FileReader( descriptor );
+            try
+            {
+                r = new FileReader( descriptor );
+            }
+            catch ( FileNotFoundException e )
+            {
+                throw new MojoFailureException( "Unable to find descriptor: " + e.getMessage() );
+            }
         }
         else if ( descriptorId != null )
         {
@@ -164,43 +163,63 @@
         }
         else
         {
-            // TODO: better exception
-            throw new MojoExecutionException( "You must specify descriptor or descriptorId" );
+            throw new MojoFailureException( "You must specify descriptor or descriptorId" );
         }
 
+        Assembly assembly;
         try
         {
             AssemblyXpp3Reader reader = new AssemblyXpp3Reader();
-            Assembly assembly = reader.read( r );
+            assembly = reader.read( r );
+        }
+        catch ( IOException e )
+        {
+            throw new MojoExecutionException( "Error reading descriptor", e );
+        }
+        catch ( XmlPullParserException e )
+        {
+            throw new MojoExecutionException( "Error reading descriptor", e );
+        }
+        finally
+        {
+            IOUtil.close( r );
+        }
 
-            // TODO: include dependencies marked for distribution under certain formats
-            // TODO: how, might we plug this into an installer, such as NSIS?
-            // TODO: allow file mode specifications?
+        // TODO: include dependencies marked for distribution under certain formats
+        // TODO: how, might we plug this into an installer, such as NSIS?
+        // TODO: allow file mode specifications?
 
-            String fullName = finalName + "-" + assembly.getId();
+        String fullName = finalName + "-" + assembly.getId();
 
-            for ( Iterator i = assembly.getFormats().iterator(); i.hasNext(); )
-            {
-                String format = (String) i.next();
+        for ( Iterator i = assembly.getFormats().iterator(); i.hasNext(); )
+        {
+            String format = (String) i.next();
 
-                String filename = fullName + "." + format;
+            String filename = fullName + "." + format;
 
+            File destFile = null;
+            try
+            {
                 // TODO: use component roles? Can we do that in a mojo?
                 Archiver archiver = createArchiver( format );
 
                 processDependencySets( archiver, assembly.getDependencySets(), assembly.isIncludeBaseDirectory() );
                 processFileSets( archiver, assembly.getFileSets(), assembly.isIncludeBaseDirectory() );
 
-                File destFile = new File( outputDirectory, filename );
+                destFile = new File( outputDirectory, filename );
                 archiver.setDestFile( destFile );
                 archiver.createArchive();
-
-                projectHelper.attachArtifact( project, format, format + "-assembly", destFile );
             }
-        }
-        finally
-        {
-            IOUtil.close( r );
+            catch ( ArchiverException e )
+            {
+                throw new MojoExecutionException( "Error creating assembly", e );
+            }
+            catch ( IOException e )
+            {
+                throw new MojoExecutionException( "Error creating assembly", e );
+            }
+
+            projectHelper.attachArtifact( project, format, format + "-assembly", destFile );
         }
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org