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/04 01:59:57 UTC
svn commit: r365787 - in /maven/plugins/trunk/maven-assembly-plugin/src/main:
java/org/apache/maven/plugin/assembly/AbstractAssemblyMojo.java
java/org/apache/maven/plugin/assembly/DirectoryMojo.java mdo/descriptor.mdo
Author: brett
Date: Tue Jan 3 16:59:51 2006
New Revision: 365787
URL: http://svn.apache.org/viewcvs?rev=365787&view=rev
Log:
Allow for multiple descriptors to be processed in an assembly. Applied with modifications.
PR: MASSEMBLY-25
Submitted by: Jochen Wiedmann
Modified:
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractAssemblyMojo.java
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/DirectoryMojo.java
maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo
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=365787&r1=365786&r2=365787&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 16:59:51 2006
@@ -60,8 +60,10 @@
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
+import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -74,9 +76,25 @@
extends AbstractUnpackingMojo
{
/**
+ * A list of descriptor files to generate from.
+ *
+ * @parameter
+ */
+ private File[] descriptors;
+
+ /**
+ * A list of built-in descriptor references to generate from. You can select from <code>bin</code>,
+ * <code>jar-with-dependencies</code>, or <code>src</code>.
+ *
+ * @parameter
+ */
+ private String[] descriptorRefs;
+
+ /**
* Predefined Assembly Descriptor Id's. You can select bin, jar-with-dependencies, or src.
*
* @parameter expression="${descriptorId}"
+ * @deprecated Please use descriptorRefs instead
*/
protected String descriptorId;
@@ -84,6 +102,7 @@
* Assembly XML Descriptor file. This must be the path to your customized descriptor file.
*
* @parameter expression="${descriptor}"
+ * @deprecated Please use descriptors instead
*/
protected File descriptor;
@@ -142,6 +161,7 @@
* Set to true to include the site generated by site:site goal.
*
* @parameter expression="${includeSite}" default-value="false"
+ * @deprecated Please set this variable in the assembly descriptor instead
*/
private boolean includeSite;
@@ -168,11 +188,21 @@
public void execute()
throws MojoExecutionException, MojoFailureException
{
- Assembly assembly = readAssembly();
+ List assemblies = readAssemblies();
// TODO: include dependencies marked for distribution under certain formats
// TODO: how, might we plug this into an installer, such as NSIS?
+ for ( Iterator i = assemblies.iterator(); i.hasNext(); )
+ {
+ Assembly assembly = (Assembly) i.next();
+ createAssembly( assembly );
+ }
+ }
+
+ private void createAssembly( Assembly assembly )
+ throws MojoExecutionException, MojoFailureException
+ {
String fullName = getDistributionName( assembly );
for ( Iterator i = assembly.getFormats().iterator(); i.hasNext(); )
@@ -287,41 +317,91 @@
return destFile;
}
- protected Assembly readAssembly()
+ protected List readAssemblies()
throws MojoFailureException, MojoExecutionException
{
- Reader r;
+ List assemblies = new ArrayList();
if ( descriptor != null )
{
- try
+ assemblies.add( getAssembly( descriptor ) );
+ }
+
+ if ( descriptorId != null )
+ {
+ assemblies.add( getAssembly( descriptorId ) );
+ }
+
+ if ( descriptors != null && descriptors.length > 0 )
+ {
+ for ( int i = 0; i < descriptors.length; i++ )
{
- r = new FileReader( descriptor );
+ assemblies.add( getAssembly( descriptors[i] ) );
}
- catch ( FileNotFoundException e )
+ }
+
+ if ( descriptorRefs != null && descriptorRefs.length > 0 )
+ {
+ for ( int i = 0; i < descriptorRefs.length; i++ )
{
- throw new MojoFailureException( "Unable to find descriptor: " + e.getMessage() );
+ assemblies.add( getAssembly( descriptorRefs[i] ) );
}
}
- else if ( descriptorId != null )
+
+ if ( assemblies.isEmpty() )
+ {
+ throw new MojoFailureException( "No assembly descriptors found." );
+ }
+
+ // check unique IDs
+ Set ids = new HashSet();
+ for ( Iterator i = assemblies.iterator(); i.hasNext(); )
{
- InputStream resourceAsStream = getClass().getResourceAsStream( "/assemblies/" + descriptorId + ".xml" );
- if ( resourceAsStream == null )
+ Assembly assembly = (Assembly) i.next();
+ if ( !ids.add( assembly.getId() ) )
{
- throw new MojoFailureException( "Descriptor with ID '" + descriptorId + "' not found" );
+ throw new MojoFailureException( "The assembly id " + assembly.getId() + " is used more than once." );
}
- r = new InputStreamReader( resourceAsStream );
+
+ }
+ return assemblies;
+ }
+
+ private Assembly getAssembly( String ref )
+ throws MojoFailureException, MojoExecutionException
+ {
+ InputStream resourceAsStream = getClass().getResourceAsStream( "/assemblies/" + ref + ".xml" );
+ if ( resourceAsStream == null )
+ {
+ throw new MojoFailureException( "Descriptor with ID '" + ref + "' not found" );
+ }
+ return getAssembly( new InputStreamReader( resourceAsStream ) );
+ }
+
+ private Assembly getAssembly( File file )
+ throws MojoFailureException, MojoExecutionException
+ {
+ Reader r;
+ try
+ {
+ r = new FileReader( file );
}
- else
+ catch ( FileNotFoundException e )
{
- throw new MojoFailureException( "You must specify descriptor or descriptorId" );
+ throw new MojoFailureException( "Unable to find descriptor: " + e.getMessage() );
}
+ return getAssembly( r );
+ }
+
+ private Assembly getAssembly( Reader reader )
+ throws MojoExecutionException
+ {
Assembly assembly;
try
{
- AssemblyXpp3Reader reader = new AssemblyXpp3Reader();
- assembly = reader.read( r );
+ AssemblyXpp3Reader r = new AssemblyXpp3Reader();
+ assembly = r.read( reader );
}
catch ( IOException e )
{
@@ -333,10 +413,10 @@
}
finally
{
- IOUtil.close( r );
+ IOUtil.close( reader );
}
- if ( includeSite )
+ if ( includeSite || assembly.isIncludeSiteDirectory() )
{
includeSiteInAssembly( assembly );
}
Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/DirectoryMojo.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/DirectoryMojo.java?rev=365787&r1=365786&r2=365787&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/DirectoryMojo.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/DirectoryMojo.java Tue Jan 3 16:59:51 2006
@@ -25,6 +25,8 @@
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
import java.io.IOException;
+import java.util.Iterator;
+import java.util.List;
/**
* Assemble an application bundle or distribution.
@@ -39,7 +41,17 @@
public void execute()
throws MojoExecutionException, MojoFailureException
{
- Assembly assembly = readAssembly();
+ List assemblies = readAssemblies();
+ for ( Iterator i = assemblies.iterator(); i.hasNext(); )
+ {
+ Assembly assembly = (Assembly) i.next();
+ createDirectory( assembly );
+ }
+ }
+
+ private void createDirectory( Assembly assembly )
+ throws MojoExecutionException, MojoFailureException
+ {
String fullName = finalName;
if ( appendAssemblyId )
Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo?rev=365787&r1=365786&r2=365787&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo Tue Jan 3 16:59:51 2006
@@ -37,6 +37,11 @@
<defaultValue>true</defaultValue>
</field>
<field>
+ <name>includeSiteDirectory</name>
+ <type>boolean</type>
+ <defaultValue>false</defaultValue>
+ </field>
+ <field>
<name>fileSets</name>
<version>1.0.0</version>
<association>
@@ -52,7 +57,7 @@
<multiplicity>*</multiplicity>
</association>
</field>
-
+
<field>
<name>dependencySets</name>
<version>1.0.0</version>
@@ -125,8 +130,8 @@
<class>
<name>FileItem</name>
<version>1.0.0</version>
- <description>Allows individual file copy with option to change destination
- file name not supported by fileSet</description>
+ <description>Allows individual file copy with option to change destination
+ file name not supported by fileSet</description>
<fields>
<field>
<name>source</name>
@@ -162,7 +167,7 @@
</field>
</fields>
</class>
-
+
<class>
<name>DependencySet</name>
<version>1.0.0</version>