getLog().debug( "This project did not have a META-INF/MANIFEST.MF file before, so a new file was created." );
}
// Read the manifest from disk
Manifest mf = new Manifest( new FileReader( manifestFile ) );
Attribute classPath = mf.getMainSection().getAttribute( "Class-Path" );
List<String> classPathElements = new ArrayList<String>();
if ( classPath != null )
{
classPathElements.addAll( Arrays.asList( classPath.getValue().split( " " ) ) );
}
else
{
classPath = new Attribute( "Class-Path", "" );
}
// Modify the classpath entries in the manifest
for ( EarModule o : getModules() )
{
if ( o instanceof JarModule )
{
JarModule jm = (JarModule) o;
if ( module.getLibDir() != null )
{
//MEAR-189:
//We use the original name, cause in case of fileNameMapping to no-version/full
//we coulnd not not delete it and it will end up in the resulting EAR and the WAR
//will not be cleaned up.
File artifact =
new File( new File( workDirectory, module.getLibDir() ), jm.getOriginalBundleFileName() );
if ( artifact.exists() )
{
getLog().debug( " -> Artifact to delete: " + artifact );
if ( !artifact.delete() )
{
getLog().error( "Could not delete '" + artifact + "'" );
}
}
}
if ( classPathElements.contains( jm.getBundleFileName() ) )
{
classPathElements.set( classPathElements.indexOf( jm.getBundleFileName() ), jm.getUri() );
}
else
{
classPathElements.add( jm.getUri() );
}
}
}
classPath.setValue( StringUtils.join( classPathElements.iterator(), " " ) );
mf.getMainSection().addConfiguredAttribute( classPath );
// Write the manifest to disk
PrintWriter pw = new PrintWriter( manifestFile );
mf.write( pw );