// Creating the target directory
if ( !getTargetDirectory().mkdirs() )
{
Exception e = new IOException( I18n.err( I18n.ERR_112_COULD_NOT_CREATE_DIRECORY, getTargetDirectory() ) );
log.error( e.getLocalizedMessage() );
throw new MojoFailureException( e.getMessage() );
}
log.info( " Copying archive files" );
try
{
// Creating the installation and instance layouts
createLayouts( false );
// Copy bat and sh scripts to bin
MojoHelperUtils.copyAsciiFile( mojo, filterProperties, getClass().getResourceAsStream(
"apacheds.bat" ), new File( getInstallationLayout().getBinDirectory(),
"apacheds.bat" ), false );
MojoHelperUtils.copyAsciiFile( mojo, filterProperties, getClass().getResourceAsStream(
"apacheds.sh" ), new File( getInstallationLayout().getBinDirectory(),
"apacheds.sh" ), false );
MojoHelperUtils.copyAsciiFile( mojo, filterProperties, getClass().getResourceAsStream(
"cpappend.bat" ), new File( getInstallationLayout().getBinDirectory(),
"cpappend.bat" ), false );
// Removing unnecessary directories and files
FileUtils.deleteDirectory( getInstallationLayout().getConfDirectory() );
File wrapperConf = new File( getInstanceLayout().getConfDirectory(), "wrapper.conf" );
if ( !wrapperConf.delete() )
{
throw new IOException( I18n.err( I18n.ERR_113_COULD_NOT_DELETE_FILE_OR_DIRECTORY, wrapperConf ) );
}
FileUtils.deleteDirectory( getInstanceLayout().getRunDirectory() );
}
catch ( Exception e )
{
log.error( e.getMessage() );
throw new MojoFailureException( "Failed to copy archive files." );
}
// Generating the archive
log.info( " Generating archive" );
// Creating the final file
String finalName = target.getFinalName();
if ( !finalName.endsWith( archiveType ) )
{
finalName = finalName + archiveType;
}
File finalFile = new File( mojo.getOutputDirectory(), finalName );
// Preparing the Ant project
Project project = new Project();
project.setBaseDir( mojo.getOutputDirectory() );
// ZIP Archive
if ( archiveType.equalsIgnoreCase( "zip" ) )
{
Zip zipTask = new Zip();
zipTask.setProject( project );
zipTask.setDestFile( finalFile );
zipTask.setBasedir( getTargetDirectory() );
zipTask.setIncludes( getArchiveDirectory().getName() + "/**" );
zipTask.execute();
}
// TAR Archive
else if ( archiveType.equalsIgnoreCase( "tar" ) )
{
Tar tarTask = new Tar();
tarTask.setProject( project );
tarTask.setDestFile( finalFile );
tarTask.setBasedir( getTargetDirectory() );
tarTask.setIncludes( getArchiveDirectory().getName() + "/**" );
tarTask.execute();
}
// TAR.GZ Archive
else if ( archiveType.equalsIgnoreCase( "tar.gz" ) )
{
File tarFile = new File( mojo.getOutputDirectory(), target.getId() + ".tar" );
Tar tarTask = new Tar();
tarTask.setProject( project );
tarTask.setDestFile( tarFile );
tarTask.setBasedir( getTargetDirectory() );
tarTask.setIncludes( getArchiveDirectory().getName() + "/**" );
tarTask.execute();
GZip gzipTask = new GZip();
gzipTask.setProject( project );
gzipTask.setDestfile( finalFile );
gzipTask.setSrc( tarFile );
gzipTask.execute();
if ( !tarFile.delete() )
{
Exception e = new IOException( I18n.err( I18n.ERR_113_COULD_NOT_DELETE_FILE_OR_DIRECTORY, tarFile ) );
log.error( e.getLocalizedMessage() );
throw new MojoFailureException( e.getMessage() );
}
}
// TAR.BZ2 Archive
else if ( archiveType.equalsIgnoreCase( "tar.bz2" ) )
{
File tarFile = new File( mojo.getOutputDirectory(), target.getId() + ".tar" );
Tar tarTask = new Tar();
tarTask.setProject( project );
tarTask.setDestFile( tarFile );
tarTask.setBasedir( getTargetDirectory() );
tarTask.setIncludes( getArchiveDirectory().getName() + "/**" );
tarTask.execute();
BZip2 bzip2Task = new BZip2();
bzip2Task.setProject( project );
bzip2Task.setDestfile( finalFile );
bzip2Task.setSrc( tarFile );
bzip2Task.execute();
if ( !tarFile.delete() )
{
Exception e = new IOException( I18n.err( I18n.ERR_113_COULD_NOT_DELETE_FILE_OR_DIRECTORY, tarFile ) );
log.error( e.getLocalizedMessage() );
throw new MojoFailureException( e.getMessage() );
}
}
log.info( "=> Archive Installer (" + archiveType + ") archive generated at "
+ finalFile );