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/05/05 10:49:32 UTC
svn commit: r400012 - in
/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly:
AbstractAssemblyMojo.java repository/DefaultRepositoryAssembler.java
repository/RepositoryAssembler.java
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;
}