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:[EMAIL PROTECTED]">Brett Porter</a> * @author <a href="mailto:[EMAIL PROTECTED]">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: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]