in archiva-repository-assembler/src/main/java/org/apache/maven/archiva/repository/assembly/DefaultRepositoryAssembler.java [227:294]
private void assembleRepositoryMetadata( ArtifactResolutionResult result,
ArtifactFilter filter,
ArtifactRepository centralRepository,
ArtifactRepository targetRepository )
throws RepositoryAssemblyException
{
for ( Iterator i = result.getArtifacts().iterator(); i.hasNext(); )
{
Artifact a = (Artifact) i.next();
if ( filter.include( a ) )
{
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
{
IOUtils.closeQuietly( writer );
}
try
{
writeChecksums( metadataFile );
File metadataFileRemote = new File( targetRepository.getBasedir(), targetRepository
.pathOfRemoteRepositoryMetadata( metadata ) );
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() + ".md5" ),
new File( metadataFileRemote.getParentFile(),
metadataFileRemote.getName() + ".md5" ) );
}
catch ( IOException e )
{
throw new RepositoryAssemblyException( "Error writing artifact metdata.", e );
}
}
}
}