Author: brett Date: Fri May 5 01:49:30 2006 New Revision: 400012 URL: http://svn.apache.org/viewcvs?rev=400012&view=rev Log: copy out of the real local repository to save on downloading unnecessarily.
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/repository/DefaultRepositoryAssembler.java maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/repository/RepositoryAssembler.java 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=400012&r1=400011&r2=400012&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 Fri May 5 01:49:30 2006 @@ -467,7 +467,7 @@ repositoryDirectory.mkdirs(); } - repositoryAssembler.assemble( repositoryDirectory, repository, project ); + repositoryAssembler.assemble( repositoryDirectory, repository, project, localRepository ); if ( includeBaseDirectory ) { Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/repository/DefaultRepositoryAssembler.java URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/repository/DefaultRepositoryAssembler.java?rev=400012&r1=400011&r2=400012&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 Fri May 5 01:49:30 2006 @@ -25,7 +25,7 @@ import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy; import org.apache.maven.artifact.repository.DefaultArtifactRepository; import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout; -import org.apache.maven.artifact.repository.metadata.Metadata; +import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata; import org.apache.maven.artifact.repository.metadata.Versioning; import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Writer; import org.apache.maven.artifact.resolver.ArtifactNotFoundException; @@ -39,6 +39,7 @@ import org.apache.maven.project.MavenProjectBuilder; import org.codehaus.plexus.logging.AbstractLogEnabled; import org.codehaus.plexus.util.FileUtils; +import org.codehaus.plexus.util.IOUtil; import java.io.File; import java.io.FileWriter; @@ -85,13 +86,15 @@ private Set groupVersionAlignmentExcludes; - public void assemble( File repositoryDirectory, Repository repository, MavenProject project ) + public void assemble( File repositoryDirectory, Repository repository, MavenProject project, + ArtifactRepository localRepository ) throws RepositoryAssemblyException { createGroupVersionAlignments( repository.getGroupVersionAlignments() ); - ArtifactRepository localRepository = createLocalRepository( repositoryDirectory ); + ArtifactRepository targetRepository = createLocalRepository( repositoryDirectory ); + ArtifactResolutionResult result; try { // i have to get everything first as a filter or transformation here doesn't seem to work @@ -100,20 +103,37 @@ // I'm not getting runtime dependencies here - ArtifactResolutionResult result = artifactResolver.resolveTransitively( project.getDependencyArtifacts(), - project.getArtifact(), - project.getRemoteArtifactRepositories(), - localRepository, metadataSource ); + result = artifactResolver.resolveTransitively( project.getDependencyArtifacts(), project.getArtifact(), + project.getRemoteArtifactRepositories(), localRepository, + metadataSource ); + } + catch ( ArtifactResolutionException e ) + { + throw new RepositoryAssemblyException( "Error resolving artifacts: " + e.getMessage(), e ); + } + catch ( ArtifactNotFoundException e ) + { + throw new RepositoryAssemblyException( "Error resolving artifacts: " + e.getMessage(), e ); + } + try + { + // 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 ); + } + + try + { // 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 ); FileUtils.mkdir( repositoryDirectory.getAbsolutePath() ); - // Blow the cache in the project builder so that we get POMs again on this next download - invalidateProccessedProjectCache(); - for ( Iterator i = result.getArtifacts().iterator(); i.hasNext(); ) { Artifact a = (Artifact) i.next(); @@ -128,63 +148,34 @@ // We need to flip it back to not being resolved so we can look for it again! a.setResolved( false ); - artifactResolver.resolveAlways( a, project.getRemoteArtifactRepositories(), localRepository ); + artifactResolver.resolve( a, project.getRemoteArtifactRepositories(), localRepository ); - // The correct metadata does not get pulled down unless this is used. Not - // sure what the problem is. - metadataSource.retrieve( a, localRepository, project.getRemoteArtifactRepositories() ); - } + File targetFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( a ) ); + FileUtils.copyFile( a.getFile(), targetFile ); - if ( repository.isIncludeMetadata() ) - { - for ( Iterator i = result.getArtifacts().iterator(); i.hasNext(); ) + if ( !"pom".equals( a.getType() ) ) { - Artifact a = (Artifact) i.next(); - - File metadataFile = - new File( a.getFile().getParentFile().getParent(), "maven-metadata-central.xml" ); - - Metadata m = new Metadata(); - - m.setGroupId( a.getGroupId() ); - - m.setArtifactId( a.getArtifactId() ); - - Versioning v = new Versioning(); - - v.setRelease( a.getVersion() ); - - v.setLatest( a.getVersion() ); - - v.addVersion( a.getVersion() ); - - m.setVersioning( v ); - - v.setLastUpdated( getUtcDateFormatter().format( new Date() ) ); - - MetadataXpp3Writer metadataWriter = new MetadataXpp3Writer(); - - Writer writer = new FileWriter( metadataFile ); - - metadataWriter.write( writer, m ); - - writer.close(); - - File metadataFileRemote = new File( a.getFile().getParentFile().getParent(), "maven-metadata.xml" ); - - FileUtils.copyFile( metadataFile, metadataFileRemote ); + // The correct metadata does not get pulled down unless this is used. Not + // sure what the problem is. + metadataSource.retrieve( a, localRepository, project.getRemoteArtifactRepositories() ); + + Artifact pomArtifact = + artifactFactory.createProjectArtifact( a.getGroupId(), a.getArtifactId(), a.getVersion() ); + File sourceFile = new File( localRepository.getBasedir(), localRepository.pathOf( pomArtifact ) ); + targetFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( pomArtifact ) ); + FileUtils.copyFile( sourceFile, targetFile ); } } } catch ( ArtifactResolutionException e ) { - throw new RepositoryAssemblyException( "Error resolving artifacts.", e ); + throw new RepositoryAssemblyException( "Error resolving artifacts: " + e.getMessage(), e ); } - catch ( ArtifactMetadataRetrievalException e ) + catch ( ArtifactNotFoundException e ) { - throw new RepositoryAssemblyException( "Error resolving artifacts.", e ); + throw new RepositoryAssemblyException( "Error resolving artifacts: " + e.getMessage(), e ); } - catch ( ArtifactNotFoundException e ) + catch ( ArtifactMetadataRetrievalException e ) { throw new RepositoryAssemblyException( "Error resolving artifacts.", e ); } @@ -192,9 +183,67 @@ { throw new RepositoryAssemblyException( "Error writing artifact metdata.", e ); } - catch ( Exception e ) + + ArtifactRepository centralRepository = null; + for ( Iterator i = project.getRemoteArtifactRepositories().iterator(); i.hasNext(); ) { - throw new RepositoryAssemblyException( "Error invalidating the processed project cache.", e ); + ArtifactRepository r = (ArtifactRepository) i.next(); + if ( "central".equals( r.getId() ) ) + { + centralRepository = r; + } + } + + if ( repository.isIncludeMetadata() ) + { + for ( Iterator i = result.getArtifacts().iterator(); i.hasNext(); ) + { + Artifact a = (Artifact) i.next(); + + Versioning v = new Versioning(); + + v.setRelease( a.getVersion() ); + + v.setLatest( a.getVersion() ); + + v.addVersion( a.getVersion() ); + + 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 ); + + MetadataXpp3Writer metadataWriter = new MetadataXpp3Writer(); + + 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 ); + } + + File metadataFileRemote = new File( targetRepository.getBasedir(), + targetRepository.pathOfRemoteRepositoryMetadata( metadata ) ); + + try + { + FileUtils.copyFile( metadataFile, metadataFileRemote ); + } + catch ( IOException e ) + { + throw new RepositoryAssemblyException( "Error writing artifact metdata.", e ); + } + } } } @@ -223,7 +272,6 @@ utcDateFormatter.setTimeZone( UTC_TIME_ZONE ); return utcDateFormatter; } - protected ArtifactRepository createLocalRepository( File directory ) { Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/repository/RepositoryAssembler.java URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/repository/RepositoryAssembler.java?rev=400012&r1=400011&r2=400012&view=diff ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/repository/RepositoryAssembler.java (original) +++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/repository/RepositoryAssembler.java Fri May 5 01:49:30 2006 @@ -16,6 +16,7 @@ * limitations under the License. */ +import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.plugins.assembly.model.Repository; import org.apache.maven.project.MavenProject; @@ -28,6 +29,7 @@ { String ROLE = RepositoryAssembler.class.getName(); - public void assemble( File repositoryDirectory, Repository repository, MavenProject project ) + public void assemble( File repositoryDirectory, Repository repository, MavenProject project, + ArtifactRepository localRepository ) throws RepositoryAssemblyException; }