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/04 02:50:42 UTC

svn commit: r428584 - in /maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly: archive/ archive/phase/ archive/task/ io/ repository/ utils/

Author: jdcasey
Date: Thu Aug  3 17:50:42 2006
New Revision: 428584

URL: http://svn.apache.org/viewvc?rev=428584&view=rev
Log:
Fixing some bugs that should have been caught by functional testing.

Modified:
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java
    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/repository/DefaultRepositoryAssembler.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/DigestUtils.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/ProjectUtils.java

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java?rev=428584&r1=428583&r2=428584&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java Thu Aug  3 17:50:42 2006
@@ -27,7 +27,7 @@
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 
 /**
- * @plexus.component role="org.apache.maven.plugin.assembly.archive.ArchiveCreator" role-hint="default"
+ * @plexus.component role="org.apache.maven.plugin.assembly.archive.AssemblyArchiver" role-hint="default"
  */
 public class DefaultAssemblyArchiver
     extends AbstractLogEnabled

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java?rev=428584&r1=428583&r2=428584&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java Thu Aug  3 17:50:42 2006
@@ -15,10 +15,10 @@
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectBuilder;
 import org.apache.maven.project.ProjectBuildingException;
-import org.apache.maven.wagon.PathUtils;
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 
+import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -71,7 +71,7 @@
                 getLogger().warn( "Encountered ModuleSet with no sources or binaries specified. Skipping." );
                 continue;
             }
-
+            
             addModuleSourceFileSets( moduleSet.getSources(), moduleProjects, archiver, configSource,
                                      includeBaseDirectory );
 
@@ -93,6 +93,9 @@
         for ( Iterator j = moduleProjects.iterator(); j.hasNext(); )
         {
             MavenProject project = ( MavenProject ) j.next();
+            
+            getLogger().debug( "Processing binary artifact for module project: " + project.getId() );
+            
             Artifact artifact = project.getArtifact();
 
             addArtifact( artifact, project, archiver, configSource, binaries, includeBaseDirectory );
@@ -110,6 +113,8 @@
             {
                 MavenProject moduleProject = ( MavenProject ) it.next();
 
+                getLogger().debug( "Processing binary dependencies for module project: " + moduleProject.getId() );
+                
                 Set binaryDependencies = moduleProject.getArtifacts();
 
                 List includes = binaries.getIncludes();
@@ -202,7 +207,26 @@
         {
             MavenProject moduleProject = ( MavenProject ) j.next();
 
-            sources.setDirectory( PathUtils.toRelative( moduleProject.getBasedir(), sources.getDirectory() ) );
+            getLogger().debug( "Processing sources for module project: " + moduleProject.getId() );
+            
+            String sourcePath = sources.getDirectory();
+            
+            File moduleBasedir = moduleProject.getBasedir();
+            
+            if ( sourcePath != null )
+            {
+                File sourceDir = new File( sourcePath );
+                
+                if ( !sourceDir.isAbsolute() )
+                {
+                    sourcePath = new File( moduleBasedir, sourcePath ).getAbsolutePath();
+                    sources.setDirectory( sourcePath );
+                }
+            }
+            else
+            {
+                sourcePath = moduleBasedir.getAbsolutePath();
+            }
 
             AddFileSetsTask task = new AddFileSetsTask( Collections.singletonList( sources ) );
 

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java?rev=428584&r1=428583&r2=428584&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java Thu Aug  3 17:50:42 2006
@@ -99,7 +99,7 @@
         destDirectory = AssemblyFormatUtils.getOutputDirectory( destDirectory, project, configSource.getFinalName(),
                                                                 includeBaseDirectory );
 
-        logger.debug( "The archive base directory is '" + archiveBaseDir.getAbsolutePath() + "'" );
+        logger.debug( "The archive base directory is '" + archiveBaseDir + "'" );
 
         File fileSetDir = getFileSetDirectory( fileSet, basedir, archiveBaseDir );
 

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=428584&r1=428583&r2=428584&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 Thu Aug  3 17:50:42 2006
@@ -38,6 +38,9 @@
 import java.util.Map;
 import java.util.Set;
 
+/**
+ * @plexus.component role="org.apache.maven.plugin.assembly.io.AssemblyReader" role-hint="default"
+ */
 public class DefaultAssemblyReader
     extends AbstractLogEnabled
     implements AssemblyReader

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/repository/DefaultRepositoryAssembler.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/repository/DefaultRepositoryAssembler.java?rev=428584&r1=428583&r2=428584&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/repository/DefaultRepositoryAssembler.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/repository/DefaultRepositoryAssembler.java Thu Aug  3 17:50:42 2006
@@ -45,6 +45,7 @@
 import org.apache.maven.project.MavenProjectBuilder;
 import org.apache.maven.project.ProjectBuildingException;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
 
@@ -67,6 +68,7 @@
 
 /**
  * @author Jason van Zyl
+ * @plexus.component role="org.apache.maven.plugin.assembly.repository.RepositoryAssembler" role-hint="default"
  */
 
 // todo will need to pop the processed project cache using reflection
@@ -78,33 +80,62 @@
 
     protected static final String UTC_TIMESTAMP_PATTERN = "yyyyMMddHHmmss";
 
+    /**
+     * @plexus.requirement
+     */
     protected ArtifactFactory artifactFactory;
 
+    /**
+     * @plexus.requirement
+     */
     protected ArtifactResolver artifactResolver;
 
+    /**
+     * @plexus.requirement
+     */
     protected ArtifactRepositoryLayout repositoryLayout;
 
+    /**
+     * @plexus.requirement
+     */
     protected ArtifactRepositoryFactory artifactRepositoryFactory;
 
+    /**
+     * @plexus.requirement
+     */
     protected ArtifactMetadataSource metadataSource;
 
+    /**
+     * @plexus.requirement
+     */
     protected MavenProjectBuilder projectBuilder;
 
-    private Map groupVersionAlignments;
-
-    private DigestUtils digester = new DigestUtils();
-
     public void assemble( File repositoryDirectory, Repository repository, AssemblerConfigurationSource configSource )
         throws RepositoryAssemblyException
     {
         MavenProject project = configSource.getProject();
         ArtifactRepository localRepository = configSource.getLocalRepository();
 
-        createGroupVersionAlignments( repository.getGroupVersionAlignments() );
+        Map groupVersionAlignments = createGroupVersionAlignments( repository.getGroupVersionAlignments() );
 
         ArtifactRepository targetRepository = createLocalRepository( repositoryDirectory );
 
-        ArtifactResolutionResult result;
+        ArtifactResolutionResult result = null;
+        
+        Set dependencyArtifacts = project.getDependencyArtifacts();
+        
+        if ( dependencyArtifacts == null )
+        {
+            Logger logger = getLogger();
+            
+            if ( logger.isDebugEnabled() )
+            {
+                logger.debug( "dependency-artifact set for project: " + project.getId() + " is null. Skipping repository processing." );
+            }
+            
+            return;
+        }
+        
         try
         {
             // i have to get everything first as a filter or transformation here
@@ -115,7 +146,7 @@
             // JARs.
 
             // FIXME I'm not getting runtime dependencies here
-            result = artifactResolver.resolveTransitively( project.getDependencyArtifacts(), project.getArtifact(),
+            result = artifactResolver.resolveTransitively( dependencyArtifacts, project.getArtifact(),
                 project.getRemoteArtifactRepositories(), localRepository, metadataSource );
         }
         catch ( ArtifactResolutionException e )
@@ -140,7 +171,7 @@
         
         ArtifactFilter filter = buildRepositoryFilter( repository, project);
 
-        assembleRepositoryArtifacts( result, filter, project, localRepository, targetRepository, repositoryDirectory );
+        assembleRepositoryArtifacts( result, filter, project, localRepository, targetRepository, repositoryDirectory, groupVersionAlignments );
         
         ArtifactRepository centralRepository = findCentralRepository( project );
 
@@ -209,7 +240,7 @@
 
     private void assembleRepositoryArtifacts( ArtifactResolutionResult result, ArtifactFilter filter,
                                               MavenProject project, ArtifactRepository localRepository,
-                                              ArtifactRepository targetRepository, File repositoryDirectory )
+                                              ArtifactRepository targetRepository, File repositoryDirectory, Map groupVersionAlignments )
         throws RepositoryAssemblyException
     {
         try
@@ -227,7 +258,7 @@
 
                 if ( filter.include( a ) )
                 {
-                    setAlignment( a );
+                    setAlignment( a, groupVersionAlignments );
 
                     // We need to flip it back to not being resolved so we can
                     // look for it again!
@@ -252,7 +283,7 @@
                             a = artifactFactory.createProjectArtifact( p.getGroupId(), p.getArtifactId(), p
                                 .getVersion() );
 
-                            setAlignment( a );
+                            setAlignment( a, groupVersionAlignments );
 
                             File sourceFile = new File( localRepository.getBasedir(), localRepository.pathOf( a ) );
 
@@ -376,8 +407,8 @@
     {
         try
         {
-            String md5 = digester.createChecksum( file, "MD5" );
-            String sha1 = digester.createChecksum( file, "SHA-1" );
+            String md5 = DigestUtils.createChecksum( file, "MD5" );
+            String sha1 = DigestUtils.createChecksum( file, "SHA-1" );
 
             FileUtils.fileWrite( new File( file.getParentFile(), file.getName() + ".md5" ).getAbsolutePath(), md5
                 .toLowerCase() );
@@ -390,9 +421,9 @@
         }
     }
 
-    protected void createGroupVersionAlignments( List versionAlignments )
+    protected Map createGroupVersionAlignments( List versionAlignments )
     {
-        groupVersionAlignments = new HashMap();
+        Map groupVersionAlignments = new HashMap();
 
         for ( Iterator i = versionAlignments.iterator(); i.hasNext(); )
         {
@@ -400,6 +431,8 @@
 
             groupVersionAlignments.put( alignment.getId(), alignment );
         }
+        
+        return groupVersionAlignments;
     }
 
     protected static DateFormat getUtcDateFormatter()
@@ -461,7 +494,7 @@
         field.setAccessible( false );
     }
 
-    private void setAlignment( Artifact artifact )
+    private void setAlignment( Artifact artifact, Map groupVersionAlignments )
     {
         GroupVersionAlignment alignment = (GroupVersionAlignment) groupVersionAlignments.get( artifact.getGroupId() );
 

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/DigestUtils.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/DigestUtils.java?rev=428584&r1=428583&r2=428584&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/DigestUtils.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/DigestUtils.java Thu Aug  3 17:50:42 2006
@@ -33,13 +33,17 @@
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
  * @todo [jdcasey] This needs unit tests.
  */
-public class DigestUtils
+public final class DigestUtils
 {
     private static final int CHECKSUM_BUFFER_SIZE = 16384;
 
     private static final int BYTE_MASK = 0xFF;
+    
+    private DigestUtils()
+    {
+    }
 
-    public String createChecksum( File file, String algorithm )
+    public static String createChecksum( File file, String algorithm )
         throws IOException, NoSuchAlgorithmException
     {
         MessageDigest digest = MessageDigest.getInstance( algorithm );

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/ProjectUtils.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/ProjectUtils.java?rev=428584&r1=428583&r2=428584&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/ProjectUtils.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/ProjectUtils.java Thu Aug  3 17:50:42 2006
@@ -49,7 +49,9 @@
                     continue;
                 }
 
-                for ( Iterator parentIterator = modules.iterator(); parentIterator.hasNext(); )
+                Set currentPotentialParents = new HashSet( modules );
+                
+                for ( Iterator parentIterator = currentPotentialParents.iterator(); parentIterator.hasNext(); )
                 {
                     MavenProject potentialParent = (MavenProject) parentIterator.next();