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 2006/08/24 23:18:47 UTC

svn commit: r434525 - in /maven/plugins/trunk/maven-assembly-plugin/src: it/dependency-sets/including-pom-dependency/src/assemble/ it/dependency-sets/including-sar-dependency/ it/dependency-sets/including-sar-dependency/src/assemble/ main/java/org/apac...

Author: jdcasey
Date: Thu Aug 24 14:18:46 2006
New Revision: 434525

URL: http://svn.apache.org/viewvc?rev=434525&view=rev
Log:
Fixing pom and sar dependency handling.

Added:
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/SarUnArchiver.java   (with props)
Removed:
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/NoOpUnArchiver.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/archiver/NoOpUnArchiverTest.java
Modified:
    maven/plugins/trunk/maven-assembly-plugin/src/it/dependency-sets/including-pom-dependency/src/assemble/bin.xml
    maven/plugins/trunk/maven-assembly-plugin/src/it/dependency-sets/including-sar-dependency/src/assemble/bin.xml
    maven/plugins/trunk/maven-assembly-plugin/src/it/dependency-sets/including-sar-dependency/verify.bsh
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java

Modified: maven/plugins/trunk/maven-assembly-plugin/src/it/dependency-sets/including-pom-dependency/src/assemble/bin.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/dependency-sets/including-pom-dependency/src/assemble/bin.xml?rev=434525&r1=434524&r2=434525&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/dependency-sets/including-pom-dependency/src/assemble/bin.xml (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/dependency-sets/including-pom-dependency/src/assemble/bin.xml Thu Aug 24 14:18:46 2006
@@ -8,7 +8,7 @@
     <dependencySet>
       <outputFileNameMapping>${artifactId}.${extension}</outputFileNameMapping>
       <outputDirectory>lib</outputDirectory>
-      <unpack>false</unpack>
+      <unpack>true</unpack>
     </dependencySet>
   </dependencySets>
 </assembly>

Modified: maven/plugins/trunk/maven-assembly-plugin/src/it/dependency-sets/including-sar-dependency/src/assemble/bin.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/dependency-sets/including-sar-dependency/src/assemble/bin.xml?rev=434525&r1=434524&r2=434525&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/dependency-sets/including-sar-dependency/src/assemble/bin.xml (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/dependency-sets/including-sar-dependency/src/assemble/bin.xml Thu Aug 24 14:18:46 2006
@@ -8,7 +8,7 @@
     <dependencySet>
       <outputFileNameMapping>${artifactId}.${extension}</outputFileNameMapping>
       <outputDirectory>lib</outputDirectory>
-      <unpack>false</unpack>
+      <unpack>true</unpack>
     </dependencySet>
   </dependencySets>
 </assembly>

Modified: maven/plugins/trunk/maven-assembly-plugin/src/it/dependency-sets/including-sar-dependency/verify.bsh
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/dependency-sets/including-sar-dependency/verify.bsh?rev=434525&r1=434524&r2=434525&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/dependency-sets/including-sar-dependency/verify.bsh (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/dependency-sets/including-sar-dependency/verify.bsh Thu Aug 24 14:18:46 2006
@@ -6,7 +6,6 @@
 result = result && new File( basedir, "target/including-sar-dependency-1.0-SNAPSHOT-bin.dir/lib/xmlrpc.jar" ).exists();
 result = result && new File( basedir, "target/including-sar-dependency-1.0-SNAPSHOT-bin.dir/lib/plexus-xmlrpc.jar" ).exists();
 
-// verify that the POM dep was included without extracting.
-result = result && new File( basedir, "target/including-sar-dependency-1.0-SNAPSHOT-bin.dir/lib/plexus-appserver-service-xmlrpc.sar" ).exists();
+result = result && new File( basedir, "target/including-sar-dependency-1.0-SNAPSHOT-bin.dir/lib/plexus-appserver-service-xmlrpc.sar/lib/commons-codec-1.3.jar" ).exists();
 
 return result;

Added: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/SarUnArchiver.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/SarUnArchiver.java?rev=434525&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/SarUnArchiver.java (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/SarUnArchiver.java Thu Aug 24 14:18:46 2006
@@ -0,0 +1,14 @@
+package org.apache.maven.plugin.assembly.archive.archiver;
+
+import org.codehaus.plexus.archiver.zip.ZipUnArchiver;
+
+/**
+ * @plexus.component role="org.codehaus.plexus.archiver.UnArchiver" role-hint="sar"
+ * @author jdcasey
+ * @todo delete this class once the plexus maven plugin can merge a generated components.xml with an existing one.
+ */
+public class SarUnArchiver
+    extends ZipUnArchiver
+{
+
+}

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/SarUnArchiver.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/archiver/SarUnArchiver.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java?rev=434525&r1=434524&r2=434525&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java Thu Aug 24 14:18:46 2006
@@ -6,14 +6,18 @@
 import org.apache.maven.plugin.assembly.archive.ArchiveCreationException;
 import org.apache.maven.plugin.assembly.filter.AssemblyScopeArtifactFilter;
 import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
+import org.apache.maven.plugin.assembly.utils.AssemblyFormatUtils;
 import org.apache.maven.plugin.assembly.utils.FilterUtils;
 import org.apache.maven.plugins.assembly.model.DependencySet;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectBuilder;
 import org.apache.maven.project.ProjectBuildingException;
 import org.codehaus.plexus.archiver.Archiver;
+import org.codehaus.plexus.archiver.ArchiverException;
 import org.codehaus.plexus.logging.Logger;
 
+import java.io.File;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -24,6 +28,17 @@
     implements ArchiverTask
 {
 
+    private static final List NON_ARCHIVE_DEPENDENCY_TYPES;
+
+    static
+    {
+        List nonArch = new ArrayList();
+
+        nonArch.add( "pom" );
+
+        NON_ARCHIVE_DEPENDENCY_TYPES = Collections.unmodifiableList( nonArch );
+    }
+
     private final List dependencySets;
 
     private boolean includeBaseDirectory = true;
@@ -38,7 +53,8 @@
 
     private String defaultOutputFileNameMapping;
 
-    public AddDependencySetsTask( List dependencySets, MavenProject project, MavenProjectBuilder projectBuilder, Logger logger )
+    public AddDependencySetsTask( List dependencySets, MavenProject project, MavenProjectBuilder projectBuilder,
+                                  Logger logger )
     {
         this.dependencySets = dependencySets;
         this.project = project;
@@ -54,7 +70,7 @@
             logger.debug( "No dependency sets specified." );
             return;
         }
-        
+
         for ( Iterator i = dependencySets.iterator(); i.hasNext(); )
         {
             DependencySet dependencySet = ( DependencySet ) i.next();
@@ -74,30 +90,74 @@
         for ( Iterator j = dependencyArtifacts.iterator(); j.hasNext(); )
         {
             Artifact depArtifact = ( Artifact ) j.next();
-            
+
             MavenProject depProject;
             try
             {
-                depProject = projectBuilder.buildFromRepository( depArtifact, configSource.getRemoteRepositories(),
-                                                    configSource.getLocalRepository() );
+                depProject =
+                    projectBuilder.buildFromRepository( depArtifact, configSource.getRemoteRepositories(),
+                                                        configSource.getLocalRepository() );
             }
             catch ( ProjectBuildingException e )
             {
                 throw new ArchiveCreationException( "Error retrieving POM of module-dependency: " + depArtifact.getId()
                                 + "; Reason: " + e.getMessage(), e );
             }
-            
-            AddArtifactTask task = new AddArtifactTask( depArtifact );
-            
-            task.setProject( depProject );
-            task.setOutputDirectory( dependencySet.getOutputDirectory(), defaultOutputDirectory );
-            task.setFileNameMapping( dependencySet.getOutputFileNameMapping(), defaultOutputFileNameMapping );
-            task.setIncludeBaseDirectory( includeBaseDirectory );
-            task.setDirectoryMode( dependencySet.getDirectoryMode() );
-            task.setFileMode( dependencySet.getFileMode() );
-            task.setUnpack( dependencySet.isUnpack() );
 
-            task.execute( archiver, configSource );
+            if ( NON_ARCHIVE_DEPENDENCY_TYPES.contains( depArtifact.getType() ) )
+            {
+                addNonArchiveDependency( depArtifact, depProject, dependencySet, archiver );
+            }
+            else
+            {
+                AddArtifactTask task = new AddArtifactTask( depArtifact );
+
+                task.setProject( depProject );
+                task.setOutputDirectory( dependencySet.getOutputDirectory(), defaultOutputDirectory );
+                task.setFileNameMapping( dependencySet.getOutputFileNameMapping(), defaultOutputFileNameMapping );
+                task.setIncludeBaseDirectory( includeBaseDirectory );
+                task.setDirectoryMode( dependencySet.getDirectoryMode() );
+                task.setFileMode( dependencySet.getFileMode() );
+                task.setUnpack( dependencySet.isUnpack() );
+
+                task.execute( archiver, configSource );
+            }
+        }
+    }
+
+    private void addNonArchiveDependency( Artifact depArtifact, MavenProject depProject, DependencySet dependencySet,
+                                          Archiver archiver )
+        throws AssemblyFormattingException, ArchiveCreationException
+    {
+        File source = depArtifact.getFile();
+
+        String outputDirectory = dependencySet.getOutputDirectory();
+
+        outputDirectory =
+            AssemblyFormatUtils.getOutputDirectory( outputDirectory, depProject, depProject.getBuild().getFinalName(),
+                                                    includeBaseDirectory );
+        String destName =
+            AssemblyFormatUtils.evaluateFileNameMapping( dependencySet.getOutputFileNameMapping(), depArtifact );
+
+        String target;
+
+        // omit the last char if ends with / or \\
+        if ( outputDirectory.endsWith( "/" ) || outputDirectory.endsWith( "\\" ) )
+        {
+            target = outputDirectory + destName;
+        }
+        else
+        {
+            target = outputDirectory + "/" + destName;
+        }
+
+        try
+        {
+            archiver.addFile( source, target, Integer.parseInt( dependencySet.getFileMode(), 8 ) );
+        }
+        catch ( ArchiverException e )
+        {
+            throw new ArchiveCreationException( "Error adding file to archive: " + e.getMessage(), e );
         }
     }
 

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java?rev=434525&r1=434524&r2=434525&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java Thu Aug 24 14:18:46 2006
@@ -54,6 +54,7 @@
         MockAndControlForAddArtifactTask macTask = new MockAndControlForAddArtifactTask( mockManager );
 
         macTask.expectArtifactGetFile();
+        macTask.expectArtifactGetType( "jar" );
         macTask.expectArtifactGetScope( Artifact.SCOPE_COMPILE );
         macTask.expectGetClassifier( null );
         macTask.expectIsSnapshot( false );

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java?rev=434525&r1=434524&r2=434525&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java Thu Aug 24 14:18:46 2006
@@ -223,6 +223,7 @@
         MockAndControlForArtifact macDepArtifact = new MockAndControlForArtifact( mm );
 
         macDepArtifact.expectGetClassifier();
+        macDepArtifact.expectGetType( "jar" );
         macDepArtifact.expectIsSnapshot( false );
         macDepArtifact.expectGetArtifactHandler();
         macDepArtifact.expectGetArtifactId( "dep" );
@@ -290,6 +291,7 @@
         MockAndControlForArtifact macDepArtifact = new MockAndControlForArtifact( mm );
 
         macDepArtifact.expectGetClassifier();
+        macDepArtifact.expectGetType( "jar" );
         macDepArtifact.expectIsSnapshot( false );
         macDepArtifact.expectGetArtifactHandler();
         macDepArtifact.expectGetArtifactId( "dep" );

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java?rev=434525&r1=434524&r2=434525&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java Thu Aug 24 14:18:46 2006
@@ -84,6 +84,7 @@
         MockAndControlForAddArtifactTask macTask = new MockAndControlForAddArtifactTask( mockManager );
 
         macTask.expectArtifactGetFile();
+        macTask.expectArtifactGetType( "jar" );
         macTask.expectArtifactGetScope( Artifact.SCOPE_COMPILE );
         macTask.expectGetClassifier( null );
         macTask.expectIsSnapshot( false );