You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2007/10/17 18:26:49 UTC

svn commit: r585558 - in /maven/plugins/trunk/maven-assembly-plugin/src: main/java/org/apache/maven/plugin/assembly/io/ main/java/org/apache/maven/plugin/assembly/mojos/ main/mdo/ test/java/org/apache/maven/plugin/assembly/io/

Author: jdcasey
Date: Wed Oct 17 09:26:48 2007
New Revision: 585558

URL: http://svn.apache.org/viewvc?rev=585558&view=rev
Log:
Adding ability to add hooks to handle arbitrary container descriptors, just like the plexus components.xml file is handled now. Also, adding a skip flag to allow fine-grained control over any particular execution using a property in the POM (which can be set or overridden by profile).

Modified:
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractAssemblyMojo.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/component.mdo
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java?rev=585558&r1=585557&r2=585558&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java Wed Oct 17 09:26:48 2007
@@ -10,6 +10,7 @@
 import org.apache.maven.plugin.assembly.interpolation.AssemblyInterpolator;
 import org.apache.maven.plugin.assembly.model.Assembly;
 import org.apache.maven.plugin.assembly.model.Component;
+import org.apache.maven.plugin.assembly.model.ContainerDescriptorHandlerConfig;
 import org.apache.maven.plugin.assembly.model.DependencySet;
 import org.apache.maven.plugin.assembly.model.FileItem;
 import org.apache.maven.plugin.assembly.model.FileSet;
@@ -382,6 +383,14 @@
      */
     protected void mergeComponentWithAssembly( Component component, Assembly assembly )
     {
+        List containerHandlerDescriptors = component.getContainerDescriptorHandlers();
+
+        for ( Iterator it = containerHandlerDescriptors.iterator(); it.hasNext(); )
+        {
+            ContainerDescriptorHandlerConfig cfg = (ContainerDescriptorHandlerConfig) it.next();
+            assembly.addContainerDescriptorHandler( cfg );
+        }
+
         List dependencySetList = component.getDependencySets();
 
         for ( Iterator it = dependencySetList.iterator(); it.hasNext(); )

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractAssemblyMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractAssemblyMojo.java?rev=585558&r1=585557&r2=585558&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractAssemblyMojo.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AbstractAssemblyMojo.java Wed Oct 17 09:26:48 2007
@@ -48,6 +48,15 @@
 {
 
     /**
+     * Flag allowing one or more executions of the assembly plugin to be configured
+     * as skipped for a particular build. This makes the assembly plugin more controllable
+     * from profiles.
+     *
+     * @parameter default-value="false"
+     */
+    private boolean skipAssembly;
+
+    /**
      * If this flag is set, everything up to the call to Archiver.createArchive() will be executed.
      *
      * @parameter expression="${assembly.dryRun}" default-value="false"
@@ -266,6 +275,12 @@
     public void execute()
         throws MojoExecutionException, MojoFailureException
     {
+        if ( skipAssembly )
+        {
+            getLog().info( "Assemblies have been skipped per configuration of the skipAssembly parameter." );
+            return;
+        }
+
         List assemblies;
         try
         {

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/component.mdo
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/component.mdo?rev=585558&r1=585557&r2=585558&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/component.mdo (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/component.mdo Wed Oct 17 09:26:48 2007
@@ -112,6 +112,20 @@
             ]]>
           </description>
         </field>
+        <field>
+          <name>containerDescriptorHandlers</name>
+          <version>1.1.0</version>
+          <association>
+            <type>ContainerDescriptorHandlerConfig</type>
+            <multiplicity>*</multiplicity>
+          </association>
+          <description>
+            <![CDATA[
+            Set of components which filter various container descriptors out of
+            the normal archive stream, so they can be aggregated then added.
+            ]]>
+          </description>
+        </field>
       </fields>
     </class>
 
@@ -558,6 +572,36 @@
           <defaultValue>false</defaultValue>
           <type>boolean</type>
         </field>
+      </fields>
+    </class>
+    <class>
+      <name>ContainerDescriptorHandlerConfig</name>
+      <version>1.1.0</version>
+      <description>
+        Configures a filter for files headed into the assembly archive, to enable
+        aggregation of various types of descriptor fragments, such as components.xml,
+        web.xml, etc.
+      </description>
+      <fields>
+        <field>
+          <name>handlerName</name>
+          <version>1.1.0</version>
+          <description>
+            The handler's plexus role-hint, for lookup from the container.
+          </description>
+          <type>String</type>
+          <required>true</required>
+        </field>
+        <!-- Commented out until it can be implemented and tested...
+        <field>
+          <name>configuration</name>
+          <version>1.1.0</version>
+          <description>
+            Configuration options for the handler.
+          </description>
+          <type>DOM</type>
+        </field>
+         -->
       </fields>
     </class>
   </classes>

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java?rev=585558&r1=585557&r2=585558&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java Wed Oct 17 09:26:48 2007
@@ -7,6 +7,7 @@
 import org.apache.maven.plugin.assembly.InvalidAssemblerConfigurationException;
 import org.apache.maven.plugin.assembly.model.Assembly;
 import org.apache.maven.plugin.assembly.model.Component;
+import org.apache.maven.plugin.assembly.model.ContainerDescriptorHandlerConfig;
 import org.apache.maven.plugin.assembly.model.DependencySet;
 import org.apache.maven.plugin.assembly.model.FileItem;
 import org.apache.maven.plugin.assembly.model.FileSet;
@@ -342,6 +343,40 @@
         assertEquals( Artifact.SCOPE_RUNTIME, ((Repository) depSets.get( 0 )).getScope() );
         assertEquals( Artifact.SCOPE_COMPILE, ((Repository) depSets.get( 1 )).getScope() );
         assertEquals( Artifact.SCOPE_SYSTEM, ((Repository) depSets.get( 2 )).getScope() );
+    }
+
+    public void testMergeComponentWithAssembly_ShouldAddOneContainerDescriptorHandlerToExistingListOfTwo()
+    {
+        Assembly assembly = new Assembly();
+
+        ContainerDescriptorHandlerConfig cfg = new ContainerDescriptorHandlerConfig();
+        cfg.setHandlerName( "one" );
+
+        assembly.addContainerDescriptorHandler( cfg );
+
+        cfg = new ContainerDescriptorHandlerConfig();
+        cfg.setHandlerName( "two" );
+
+        assembly.addContainerDescriptorHandler( cfg );
+
+        Component component = new Component();
+
+        cfg = new ContainerDescriptorHandlerConfig();
+        cfg.setHandlerName( "three" );
+
+        component.addContainerDescriptorHandler( cfg );
+
+        new DefaultAssemblyReader().mergeComponentWithAssembly( component, assembly );
+
+        List result = assembly.getContainerDescriptorHandlers();
+
+        assertNotNull( result );
+        assertEquals( 3, result.size() );
+
+        Iterator it = result.iterator();
+        assertEquals( "one", ((ContainerDescriptorHandlerConfig) it.next()).getHandlerName() );
+        assertEquals( "two", ((ContainerDescriptorHandlerConfig) it.next()).getHandlerName() );
+        assertEquals( "three", ((ContainerDescriptorHandlerConfig) it.next()).getHandlerName() );
     }
 
     // FIXME: Deep merging should take place...