in archiva-repository-assembler/src/main/java/org/apache/maven/archiva/repository/assembly/DefaultRepositoryAssembler.java [145:225]
private void assembleRepositoryArtifacts( ArtifactResolutionResult result,
ArtifactFilter filter,
List remoteRepositories,
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
// the assembly we previously populated.
FileUtils.deleteDirectory( repositoryDirectory );
repositoryDirectory.mkdirs();
for ( Iterator i = result.getArtifacts().iterator(); i.hasNext(); )
{
Artifact a = (Artifact) i.next();
if ( filter.include( a ) )
{
// We need to flip it back to not being resolved so we can
// look for it again!
a.setResolved( false );
artifactResolver.resolve( a, remoteRepositories, localRepository );
File targetFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( a ) );
FileUtils.copyFile( a.getFile(), targetFile );
writeChecksums( targetFile );
if ( !"pom".equals( a.getType() ) )
{
a = artifactFactory.createProjectArtifact( a.getGroupId(), a.getArtifactId(), a.getVersion() );
MavenProject p = projectBuilder.buildFromRepository( a, project.getRemoteArtifactRepositories(),
localRepository );
do
{
a = artifactFactory.createProjectArtifact( p.getGroupId(), p.getArtifactId(), p
.getVersion() );
setAlignment( a, groupVersionAlignments );
File sourceFile = new File( localRepository.getBasedir(), localRepository.pathOf( a ) );
if ( !sourceFile.exists() )
{
break;
}
targetFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( a ) );
FileUtils.copyFile( sourceFile, targetFile );
writeChecksums( targetFile );
p = p.getParent();
}
while ( p != null );
}
}
}
}
catch ( ArtifactResolutionException e )
{
throw new RepositoryAssemblyException( "Error resolving artifacts: " + e.getMessage(), e );
}
catch ( ArtifactNotFoundException e )
{
throw new RepositoryAssemblyException( "Error resolving artifacts: " + e.getMessage(), e );
}
catch ( IOException e )
{
throw new RepositoryAssemblyException( "Error writing artifact metdata.", e );
}
}