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/07/18 18:42:44 UTC

svn commit: r423128 [2/2] - in /maven/plugins/branches/MASSEMBLY-124/src/main: java/org/apache/maven/plugin/assembly/archive/ java/org/apache/maven/plugin/assembly/archive/phase/ java/org/apache/maven/plugin/assembly/repository/ mdo/

Modified: maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/repository/DefaultRepositoryAssembler.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/repository/DefaultRepositoryAssembler.java?rev=423128&r1=423127&r2=423128&view=diff
==============================================================================
--- maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/repository/DefaultRepositoryAssembler.java (original)
+++ maven/plugins/branches/MASSEMBLY-124/src/main/java/org/apache/maven/plugin/assembly/repository/DefaultRepositoryAssembler.java Tue Jul 18 09:42:43 2006
@@ -57,6 +57,7 @@
 import org.apache.maven.plugin.assembly.utils.DigestUtils;
 import org.apache.maven.plugins.assembly.model.GroupVersionAlignment;
 import org.apache.maven.plugins.assembly.model.Repository;
+import org.apache.maven.plugins.assembly.model.SetBase;
 import org.apache.maven.project.DefaultMavenProjectBuilder;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectBuilder;
@@ -99,7 +100,7 @@
     {
         MavenProject project = configSource.getProject();
         ArtifactRepository localRepository = configSource.getLocalRepository();
-        
+
         createGroupVersionAlignments( repository.getGroupVersionAlignments() );
 
         ArtifactRepository targetRepository = createLocalRepository( repositoryDirectory );
@@ -107,15 +108,16 @@
         ArtifactResolutionResult result;
         try
         {
-            // i have to get everything first as a filter or transformation here doesn't seem to work
-            // to align everything. If I use a filter to change the version on the fly then I get the
-            // I get JARs but no POMs, and in some directories POMs with no JARs.
-
-            // I'm not getting runtime dependencies here
+            // i have to get everything first as a filter or transformation here
+            // doesn't seem to work
+            // to align everything. If I use a filter to change the version on
+            // the fly then I get the
+            // I get JARs but no POMs, and in some directories POMs with no
+            // JARs.
 
+            // FIXME I'm not getting runtime dependencies here
             result = artifactResolver.resolveTransitively( project.getDependencyArtifacts(), project.getArtifact(),
-                                                           project.getRemoteArtifactRepositories(), localRepository,
-                                                           metadataSource );
+                project.getRemoteArtifactRepositories(), localRepository, metadataSource );
         }
         catch ( ArtifactResolutionException e )
         {
@@ -128,23 +130,39 @@
 
         try
         {
-            // Blow the cache in the project builder so that we get POMs again on this next download
+            // Blow the cache in the project builder so that we get POMs again
+            // on this next download
             invalidateProccessedProjectCache();
         }
         catch ( Exception e )
         {
             throw new RepositoryAssemblyException( "Error invalidating the processed project cache.", e );
         }
+        
+        ArtifactFilter filter = buildRepositoryFilter( repository, project);
+
+        assembleRepositoryArtifacts( result, filter, project, localRepository, targetRepository, repositoryDirectory );
+        
+        ArtifactRepository centralRepository = findCentralRepository( project );
+
+        if ( repository.isIncludeMetadata() )
+        {
+            assembleRepositoryMetadata( result, filter, centralRepository, targetRepository );
+        }
+    }
 
+    private ArtifactFilter buildRepositoryFilter(SetBase repository, MavenProject project)
+    {
         AndArtifactFilter filter = new AndArtifactFilter();
 
         ArtifactFilter scopeFilter = new ScopeArtifactFilter( Artifact.SCOPE_RUNTIME );
         filter.add( scopeFilter );
-        
+
         // ----------------------------------------------------------------------------
         // Includes
         //
-        // We'll take everything if no includes are specified to try and make this
+        // We'll take everything if no includes are specified to try and make
+        // this
         // process more maintainable. Don't want to have to update the assembly
         // descriptor everytime the POM is updated.
         // ----------------------------------------------------------------------------
@@ -152,21 +170,21 @@
         if ( repository.getIncludes().isEmpty() )
         {
             List patterns = new ArrayList();
-            
+
             Set projectArtifacts = project.getDependencyArtifacts();
-            
+
             if ( projectArtifacts != null )
             {
                 for ( Iterator it = projectArtifacts.iterator(); it.hasNext(); )
                 {
                     Artifact artifact = (Artifact) it.next();
-                    
+
                     patterns.add( artifact.getDependencyConflictId() );
                 }
             }
-            
+
             AssemblyIncludesArtifactFilter includeFilter = new AssemblyIncludesArtifactFilter( patterns, true );
-            
+
             filter.add( includeFilter );
         }
         else
@@ -177,7 +195,8 @@
         // ----------------------------------------------------------------------------
         // Excludes
         //
-        // We still want to make it easy to exclude a few things even if we slurp
+        // We still want to make it easy to exclude a few things even if we
+        // slurp
         // up everything.
         // ----------------------------------------------------------------------------
 
@@ -186,9 +205,18 @@
             filter.add( new AssemblyExcludesArtifactFilter( repository.getExcludes(), true ) );
         }
 
+        return filter;
+    }
+
+    private void assembleRepositoryArtifacts( ArtifactResolutionResult result, ArtifactFilter filter,
+                                              MavenProject project, ArtifactRepository localRepository,
+                                              ArtifactRepository targetRepository, File repositoryDirectory )
+        throws RepositoryAssemblyException
+    {
         try
         {
-            // Now that we have the graph, let's try to align it to versions that we want and remove
+            // Now that we have the graph, let's try to align it to versions
+            // that we want and remove
             // the repository we previously populated.
             FileUtils.deleteDirectory( repositoryDirectory );
 
@@ -202,7 +230,8 @@
                 {
                     setAlignment( a );
 
-                    // We need to flip it back to not being resolved so we can look for it again!
+                    // We need to flip it back to not being resolved so we can
+                    // look for it again!
                     a.setResolved( false );
 
                     artifactResolver.resolve( a, project.getRemoteArtifactRepositories(), localRepository );
@@ -216,19 +245,19 @@
                     {
                         a = artifactFactory.createProjectArtifact( a.getGroupId(), a.getArtifactId(), a.getVersion() );
 
-                        MavenProject p = projectBuilder.buildFromRepository( a, project.getRemoteArtifactRepositories(),
-                                                                             localRepository );
+                        MavenProject p = projectBuilder.buildFromRepository( a,
+                            project.getRemoteArtifactRepositories(), localRepository );
 
                         do
                         {
-                            a = artifactFactory.createProjectArtifact( p.getGroupId(), p.getArtifactId(),
-                                                                       p.getVersion() );
+                            a = artifactFactory.createProjectArtifact( p.getGroupId(), p.getArtifactId(), p
+                                .getVersion() );
 
                             setAlignment( a );
 
                             File sourceFile = new File( localRepository.getBasedir(), localRepository.pathOf( a ) );
 
-                            if( !sourceFile.exists() )
+                            if ( !sourceFile.exists() )
                             {
                                 break;
                             }
@@ -240,8 +269,7 @@
                             writeChecksums( targetFile );
 
                             p = p.getParent();
-                        }
-                        while ( p != null );
+                        } while ( p != null );
                     }
                 }
             }
@@ -262,7 +290,10 @@
         {
             throw new RepositoryAssemblyException( "Error reading POM.", e );
         }
+    }
 
+    private ArtifactRepository findCentralRepository( MavenProject project )
+    {
         ArtifactRepository centralRepository = null;
         for ( Iterator i = project.getRemoteArtifactRepositories().iterator(); i.hasNext(); )
         {
@@ -273,68 +304,69 @@
             }
         }
 
-        if ( repository.isIncludeMetadata() )
+        return centralRepository;
+    }
+
+    private void assembleRepositoryMetadata( ArtifactResolutionResult result, ArtifactFilter filter,
+                                             ArtifactRepository centralRepository, ArtifactRepository targetRepository )
+        throws RepositoryAssemblyException
+    {
+        for ( Iterator i = result.getArtifacts().iterator(); i.hasNext(); )
         {
-            for ( Iterator i = result.getArtifacts().iterator(); i.hasNext(); )
-            {
-                Artifact a = (Artifact) i.next();
+            Artifact a = (Artifact) i.next();
 
-                if ( filter.include( a ) )
-                {
-                    Versioning v = new Versioning();
+            if ( filter.include( a ) )
+            {
+                Versioning v = new Versioning();
 
-                    v.setRelease( a.getVersion() );
+                v.setRelease( a.getVersion() );
 
-                    v.setLatest( a.getVersion() );
+                v.setLatest( a.getVersion() );
 
-                    v.addVersion( a.getVersion() );
+                v.addVersion( a.getVersion() );
 
-                    v.setLastUpdated( getUtcDateFormatter().format( new Date() ) );
+                v.setLastUpdated( getUtcDateFormatter().format( new Date() ) );
 
-                    ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata( a, v );
-                    String path = targetRepository.pathOfLocalRepositoryMetadata( metadata, centralRepository );
-                    File metadataFile = new File( targetRepository.getBasedir(), path );
+                ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata( a, v );
+                String path = targetRepository.pathOfLocalRepositoryMetadata( metadata, centralRepository );
+                File metadataFile = new File( targetRepository.getBasedir(), path );
 
-                    MetadataXpp3Writer metadataWriter = new MetadataXpp3Writer();
+                MetadataXpp3Writer metadataWriter = new MetadataXpp3Writer();
 
-                    Writer writer = null;
-                    try
-                    {
-                        writer = new FileWriter( metadataFile );
+                Writer writer = null;
+                try
+                {
+                    writer = new FileWriter( metadataFile );
 
-                        metadataWriter.write( writer, metadata.getMetadata() );
-                    }
-                    catch ( IOException e )
-                    {
-                        throw new RepositoryAssemblyException( "Error writing artifact metdata.", e );
-                    }
-                    finally
-                    {
-                        IOUtil.close( writer );
-                    }
+                    metadataWriter.write( writer, metadata.getMetadata() );
+                }
+                catch ( IOException e )
+                {
+                    throw new RepositoryAssemblyException( "Error writing artifact metdata.", e );
+                }
+                finally
+                {
+                    IOUtil.close( writer );
+                }
 
-                    try
-                    {
-                        writeChecksums( metadataFile );
+                try
+                {
+                    writeChecksums( metadataFile );
 
-                        File metadataFileRemote = new File( targetRepository.getBasedir(),
-                                                            targetRepository.pathOfRemoteRepositoryMetadata(
-                                                                metadata ) );
+                    File metadataFileRemote = new File( targetRepository.getBasedir(), targetRepository
+                        .pathOfRemoteRepositoryMetadata( metadata ) );
 
-                        FileUtils.copyFile( metadataFile, metadataFileRemote );
+                    FileUtils.copyFile( metadataFile, metadataFileRemote );
 
-                        FileUtils.copyFile( new File( metadataFile.getParentFile(), metadataFile.getName() + ".sha1" ),
-                                            new File( metadataFileRemote.getParentFile(),
-                                                      metadataFileRemote.getName() + ".sha1" ) );
+                    FileUtils.copyFile( new File( metadataFile.getParentFile(), metadataFile.getName() + ".sha1" ),
+                        new File( metadataFileRemote.getParentFile(), metadataFileRemote.getName() + ".sha1" ) );
 
-                        FileUtils.copyFile( new File( metadataFile.getParentFile(), metadataFile.getName() + ".md5" ),
-                                            new File( metadataFileRemote.getParentFile(),
-                                                      metadataFileRemote.getName() + ".md5" ) );
-                    }
-                    catch ( IOException e )
-                    {
-                        throw new RepositoryAssemblyException( "Error writing artifact metdata.", e );
-                    }
+                    FileUtils.copyFile( new File( metadataFile.getParentFile(), metadataFile.getName() + ".md5" ),
+                        new File( metadataFileRemote.getParentFile(), metadataFileRemote.getName() + ".md5" ) );
+                }
+                catch ( IOException e )
+                {
+                    throw new RepositoryAssemblyException( "Error writing artifact metdata.", e );
                 }
             }
         }
@@ -348,8 +380,10 @@
             String md5 = digester.createChecksum( file, "MD5" );
             String sha1 = digester.createChecksum( file, "SHA-1" );
 
-            FileUtils.fileWrite( new File( file.getParentFile(), file.getName() + ".md5" ).getAbsolutePath(), md5.toLowerCase() );
-            FileUtils.fileWrite( new File( file.getParentFile(), file.getName() + ".sha1" ).getAbsolutePath(), sha1.toLowerCase() );
+            FileUtils.fileWrite( new File( file.getParentFile(), file.getName() + ".md5" ).getAbsolutePath(), md5
+                .toLowerCase() );
+            FileUtils.fileWrite( new File( file.getParentFile(), file.getName() + ".sha1" ).getAbsolutePath(), sha1
+                .toLowerCase() );
         }
         catch ( NoSuchAlgorithmException e )
         {
@@ -386,14 +420,14 @@
         }
 
         return createRepository( "local", localRepositoryUrl, false, true,
-                                 ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN );
+            ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN );
     }
 
     public ArtifactRepository createRepository( String repositoryId, String repositoryUrl, boolean offline,
                                                 boolean updateSnapshots, String globalChecksumPolicy )
     {
-        ArtifactRepository localRepository =
-            new DefaultArtifactRepository( repositoryId, repositoryUrl, repositoryLayout );
+        ArtifactRepository localRepository = new DefaultArtifactRepository( repositoryId, repositoryUrl,
+            repositoryLayout );
 
         boolean snapshotPolicySet = false;
 

Modified: maven/plugins/branches/MASSEMBLY-124/src/main/mdo/descriptor.mdo
URL: http://svn.apache.org/viewvc/maven/plugins/branches/MASSEMBLY-124/src/main/mdo/descriptor.mdo?rev=423128&r1=423127&r2=423128&view=diff
==============================================================================
--- maven/plugins/branches/MASSEMBLY-124/src/main/mdo/descriptor.mdo (original)
+++ maven/plugins/branches/MASSEMBLY-124/src/main/mdo/descriptor.mdo Tue Jul 18 09:42:43 2006
@@ -456,7 +456,7 @@
     <class>
       <name>ModuleSources</name>
       <version>1.0.0</version>
-      <superClass>SetBase</superClass>
+      <superClass>FileSet</superClass>
       <description>Configuration for including the source files for a Module in an assembly.</description>
     </class>