final AssemblerConfigurationSource configSource,
final List<ContainerDescriptorHandler> containerHandlers,
boolean recompressZippedFiles )
throws ArchiverException, NoSuchArchiverException
{
Archiver archiver;
if ( "tgz".equals( format ) || "tbz2".equals( format ) || format.startsWith( "tar" ) )
{
archiver = createTarArchiver( format, TarLongFileMode.valueOf( configSource.getTarLongFileMode() ) );
}
else if ( "war".equals( format ) )
{
archiver = createWarArchiver();
}
else
{
archiver = archiverManager.getArchiver( format );
}
if ( archiver instanceof AbstractZipArchiver )
{
( (AbstractZipArchiver) archiver ).setRecompressAddedZips( recompressZippedFiles );
}
final List<FileSelector> extraSelectors = new ArrayList<FileSelector>();
final List<ArchiveFinalizer> extraFinalizers = new ArrayList<ArchiveFinalizer>();
if ( archiver instanceof JarArchiver )
{
extraSelectors.add( new JarSecurityFileSelector() );
extraFinalizers.add( new ManifestCreationFinalizer( configSource.getMavenSession(),
configSource.getProject(),
configSource.getJarArchiveConfiguration() ) );
}
if ( configSource.getArchiverConfig() != null )
{
configureArchiver( archiver, configSource );
}
String prefix = "";
if ( includeBaseDir )
{
prefix = finalName;
}
archiver =
new AssemblyProxyArchiver( prefix, archiver, containerHandlers, extraSelectors, extraFinalizers,
configSource.getWorkingDirectory(), getLogger(), configSource.isDryRun() );
archiver.setUseJvmChmod( configSource.isUpdateOnly() );
archiver.setIgnorePermissions( configSource.isIgnorePermissions() );
archiver.setForced( !configSource.isUpdateOnly() );
return archiver;
}