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/03 08:57:24 UTC

svn commit: r365567 - in /maven/plugins/trunk/maven-assembly-plugin/src/main: java/org/apache/maven/plugin/assembly/AbstractAssemblyMojo.java java/org/apache/maven/plugin/assembly/AbstractUnpackingMojo.java resources/assemblies/jar-with-dependencies.xml

Author: brett
Date: Mon Jan  2 23:57:17 2006
New Revision: 365567

URL: http://svn.apache.org/viewcvs?rev=365567&view=rev
Log:
PR: MASSEMBLY-47
include modules and their dependencies in assembly when included in dependency sets

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/AbstractUnpackingMojo.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/resources/assemblies/jar-with-dependencies.xml

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=365567&r1=365566&r2=365567&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 Mon Jan  2 23:57:17 2006
@@ -16,6 +16,12 @@
  * limitations under the License.
  */
 
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.handler.ArtifactHandler;
+import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
+import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter;
+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;
@@ -23,41 +29,35 @@
 import org.apache.maven.plugins.assembly.model.FileItem;
 import org.apache.maven.plugins.assembly.model.FileSet;
 import org.apache.maven.plugins.assembly.model.io.xpp3.AssemblyXpp3Reader;
-import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
-import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
-import org.apache.maven.artifact.resolver.filter.IncludesArtifactFilter;
-import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter;
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.handler.ArtifactHandler;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectHelper;
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.archiver.ArchiverException;
-import org.codehaus.plexus.archiver.war.WarArchiver;
-import org.codehaus.plexus.archiver.tar.TarArchiver;
 import org.codehaus.plexus.archiver.manager.NoSuchArchiverException;
-import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
-import org.codehaus.plexus.util.StringUtils;
-import org.codehaus.plexus.util.IOUtil;
-import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.archiver.tar.TarArchiver;
+import org.codehaus.plexus.archiver.war.WarArchiver;
 import org.codehaus.plexus.util.DirectoryScanner;
+import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.introspection.ReflectionValueExtractor;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
-import java.util.Iterator;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.regex.Pattern;
-import java.util.regex.Matcher;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
 import java.io.File;
-import java.io.IOException;
-import java.io.Reader;
-import java.io.FileReader;
 import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.FileWriter;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
@@ -123,7 +123,7 @@
      * @readonly
      */
     private File tempFile;
-    
+
     /**
      * Directory for site generated.
      *
@@ -138,7 +138,7 @@
      * @parameter expression="${includeSite}" default-value="false"
      */
     private boolean includeSite;
-    
+
     /**
      * Set to false to exclude the assembly id from the assembly final name.
      *
@@ -152,6 +152,7 @@
      * Create the binary distribution.
      *
      * @throws org.apache.maven.plugin.MojoExecutionException
+     *
      */
     public void execute()
         throws MojoExecutionException, MojoFailureException
@@ -216,7 +217,7 @@
         {
             return finalName;
         }
-        
+
         if ( appendAssemblyId )
         {
             return finalName + "-" + assembly.getId();
@@ -385,7 +386,8 @@
                             evaluateFileNameMapping( dependencySet.getOutputFileNameMapping(), artifact ) );
                     }
                 }
-                else {
+                else
+                {
                     // would be better to have a way to find out when a specified include or exclude
                     // is never triggered and warn() it.
                     getLog().debug( "artifact: " + artifact + " not included" );
@@ -397,16 +399,19 @@
     private void addDirectory( Archiver archiver, File directory, String output, String[] includes, List excludes )
         throws IOException, XmlPullParserException, ArchiverException
     {
-        // TODO: more robust set of filters on added files in the archiver
-        File componentsXml = new File( directory, ComponentsXmlArchiverFileFilter.COMPONENTS_XML_PATH );
-        if ( componentsXml.exists() )
+        if ( directory.exists() )
         {
-            componentsXmlFilter.addComponentsXml( componentsXml );
-            excludes = new ArrayList( excludes );
-            excludes.add( ComponentsXmlArchiverFileFilter.COMPONENTS_XML_PATH );
-        }
+            // TODO: more robust set of filters on added files in the archiver
+            File componentsXml = new File( directory, ComponentsXmlArchiverFileFilter.COMPONENTS_XML_PATH );
+            if ( componentsXml.exists() )
+            {
+                componentsXmlFilter.addComponentsXml( componentsXml );
+                excludes = new ArrayList( excludes );
+                excludes.add( ComponentsXmlArchiverFileFilter.COMPONENTS_XML_PATH );
+            }
 
-        archiver.addDirectory( directory, output, includes, (String[]) excludes.toArray( EMPTY_STRING_ARRAY ) );
+            archiver.addDirectory( directory, output, includes, (String[]) excludes.toArray( EMPTY_STRING_ARRAY ) );
+        }
     }
 
     /**
@@ -416,6 +421,7 @@
      * @param fileSets
      * @param includeBaseDirecetory
      * @throws org.codehaus.plexus.archiver.ArchiverException
+     *
      */
     protected void processFileSets( Archiver archiver, List fileSets, boolean includeBaseDirecetory )
         throws ArchiverException, IOException, XmlPullParserException
@@ -499,6 +505,7 @@
      * @param archiver
      * @param fileList
      * @throws org.codehaus.plexus.archiver.ArchiverException
+     *
      */
     protected void processFileList( Archiver archiver, List fileList, boolean includeBaseDirecetory )
         throws ArchiverException, IOException
@@ -506,37 +513,37 @@
         for ( Iterator i = fileList.iterator(); i.hasNext(); )
         {
             FileItem fileItem = (FileItem) i.next();
-            
-            File source = new File ( fileItem.getSource() );
-            
+
+            File source = new File( fileItem.getSource() );
+
             String outputDirectory = fileItem.getOutputDirectory();
-            
+
             if ( outputDirectory == null )
             {
-            	outputDirectory = "";
+                outputDirectory = "";
             }
-            
+
             String destName = fileItem.getDestName();
-            
-            if  ( destName == null )
+
+            if ( destName == null )
             {
-            	destName = source.getName();
+                destName = source.getName();
             }
 
             String lineEnding = getLineEndingCharacters( fileItem.getLineEnding() );
-            
+
             if ( lineEnding != null )
             {
-            	this.copyReplacingLineEndings( source, this.tempFile, lineEnding );
-            	source = this.tempFile;
+                this.copyReplacingLineEndings( source, this.tempFile, lineEnding );
+                source = this.tempFile;
             }
-            
+
             outputDirectory = getOutputDirectory( outputDirectory, includeBaseDirecetory );
-            
-            archiver.addFile( source , outputDirectory + "/" + destName, Integer.parseInt( fileItem.getFileMode() ) );
+
+            archiver.addFile( source, outputDirectory + "/" + destName, Integer.parseInt( fileItem.getFileMode() ) );
         }
     }
-    
+
     /**
      * Evaluates Filename Mapping
      *
@@ -544,6 +551,7 @@
      * @param artifact
      * @return expression
      * @throws org.apache.maven.plugin.MojoExecutionException
+     *
      */
     private static String evaluateFileNameMapping( String expression, Artifact artifact )
         throws MojoExecutionException
@@ -635,7 +643,9 @@
      * @param format Archive format
      * @return archiver  Archiver generated
      * @throws org.codehaus.plexus.archiver.ArchiverException
+     *
      * @throws org.codehaus.plexus.archiver.manager.NoSuchArchiverException
+     *
      */
     private Archiver createArchiver( String format )
         throws ArchiverException, NoSuchArchiverException

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractUnpackingMojo.java
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractUnpackingMojo.java?rev=365567&r1=365566&r2=365567&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractUnpackingMojo.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractUnpackingMojo.java Mon Jan  2 23:57:17 2006
@@ -16,8 +16,10 @@
  * limitations under the License.
  */
 
+import org.apache.maven.artifact.Artifact;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.archiver.ArchiverException;
 import org.codehaus.plexus.archiver.UnArchiver;
 import org.codehaus.plexus.archiver.manager.ArchiverManager;
@@ -32,8 +34,6 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.project.MavenProject;
 
 /**
  * Base routines for assembly and unpack goals.
@@ -88,6 +88,15 @@
     private List reactorProjects;
 
     /**
+     * The executed project when the base was forked.
+     *
+     * @parameter expression="${executedProject}"
+     * @required
+     * @readonly
+     */
+    private MavenProject executedProject;
+
+    /**
      * Retrieves all artifact dependencies within the reactor
      *
      * @return A HashSet of artifacts
@@ -96,16 +105,40 @@
     {
         Map dependencies = new HashMap();
 
+        // TODO: this is not mediating dependencies versions - first wins. Is there a way we can do that properly from here?
+        if ( executedProject != null )
+        {
+            Artifact artifact = executedProject.getArtifact();
+
+            if ( artifact.getFile() != null )
+            {
+                String key = artifact.getDependencyConflictId();
+
+                dependencies.put( key, artifact );
+            }
+        }
+
         for ( Iterator i = reactorProjects.iterator(); i.hasNext(); )
         {
             MavenProject reactorProject = (MavenProject) i.next();
 
+            Artifact artifact = reactorProject.getArtifact();
+
+            if ( artifact.getFile() != null )
+            {
+                String key = artifact.getDependencyConflictId();
+
+                if ( !dependencies.containsKey( key ) )
+                {
+                    dependencies.put( key, artifact );
+                }
+            }
+
             for ( Iterator j = reactorProject.getArtifacts().iterator(); j.hasNext(); )
             {
-                Artifact artifact = (Artifact) j.next();
+                artifact = (Artifact) j.next();
 
-                // TODO: [jc; 16-nov-05] Why doesn't this use artifact.getId()?
-                String key = artifact.getGroupId() + ":" + artifact.getArtifactId() + ":" + artifact.getVersion();
+                String key = artifact.getDependencyConflictId();
 
                 if ( !dependencies.containsKey( key ) )
                 {
@@ -120,7 +153,7 @@
     /**
      * Unpacks the archive file.
      *
-     * @param file File to be unpacked.
+     * @param file     File to be unpacked.
      * @param location Location where to put the unpacked files.
      */
     protected void unpack( File file, File location )

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/resources/assemblies/jar-with-dependencies.xml
URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-assembly-plugin/src/main/resources/assemblies/jar-with-dependencies.xml?rev=365567&r1=365566&r2=365567&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/resources/assemblies/jar-with-dependencies.xml (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/resources/assemblies/jar-with-dependencies.xml Mon Jan  2 23:57:17 2006
@@ -5,13 +5,6 @@
     <format>jar</format>
   </formats>
   <includeBaseDirectory>false</includeBaseDirectory>
-  <fileSets>
-    <fileSet>
-      <!-- TODO: use expressions instead: ${project.build.directory}, ${project.build.finalName}, or have a <build /> tag to include the built artifact -->
-      <directory>target/classes</directory>
-      <outputDirectory>/</outputDirectory>
-    </fileSet>
-  </fileSets>
   <dependencySets>
     <dependencySet>
       <outputDirectory>/</outputDirectory>