String packageName, File basedir, File archetypeFilesDirectory,
List<String> languages, List<String> filtereds, String defaultEncoding,
boolean preserveCData, boolean keepParent )
throws IOException, XmlPullParserException
{
ModuleDescriptor archetypeDescriptor = new ModuleDescriptor();
getLogger().debug( "Starting module's descriptor " + moduleId );
archetypeFilesDirectory.mkdirs();
getLogger().debug( "Module's files output directory " + archetypeFilesDirectory );
Model pom = pomManager.readPom( FileUtils.resolveFile( basedir, Constants.ARCHETYPE_POM ) );
String replacementId = pom.getArtifactId();
String moduleDirectory = pom.getArtifactId();
if ( replacementId.indexOf( rootArtifactId ) >= 0 )
{
replacementId = StringUtils.replace( replacementId, rootArtifactId, "${rootArtifactId}" );
moduleDirectory = StringUtils.replace( moduleId, rootArtifactId, "__rootArtifactId__" );
}
if ( moduleId.indexOf( rootArtifactId ) >= 0 )
{
moduleDirectory = StringUtils.replace( moduleId, rootArtifactId, "__rootArtifactId__" );
}
archetypeDescriptor.setName( replacementId );
archetypeDescriptor.setId( replacementId );
archetypeDescriptor.setDir( moduleDirectory );
setArtifactId( reverseProperties, pom.getArtifactId() );
List<String> fileNames = resolveFileNames( pom, basedir );
List<FileSet> filesets = resolveFileSets( packageName, fileNames, languages, filtereds, defaultEncoding );
getLogger().debug( "Resolved filesets for module " + archetypeDescriptor.getName() );
archetypeDescriptor.setFileSets( filesets );
createArchetypeFiles( reverseProperties, filesets, packageName, basedir, archetypeFilesDirectory,
defaultEncoding );
getLogger().debug( "Created files for module " + archetypeDescriptor.getName() );
String parentArtifactId = reverseProperties.getProperty( Constants.PARENT_ARTIFACT_ID );
setParentArtifactId( reverseProperties, pom.getArtifactId() );
for ( Iterator<String> modules = pom.getModules().iterator(); modules.hasNext(); )
{
String subModuleId = modules.next();
String subModuleIdDirectory = subModuleId;
if ( subModuleId.indexOf( rootArtifactId ) >= 0 )
{
subModuleIdDirectory = StringUtils.replace( subModuleId, rootArtifactId, "__rootArtifactId__" );
}
getLogger().debug( "Creating module " + subModuleId );
ModuleDescriptor moduleDescriptor =
createModule( reverseProperties, rootArtifactId, subModuleId, packageName,
FileUtils.resolveFile( basedir, subModuleId ),
FileUtils.resolveFile( archetypeFilesDirectory, subModuleIdDirectory ), languages,
filtereds, defaultEncoding, preserveCData, keepParent );
archetypeDescriptor.addModule( moduleDescriptor );
getLogger().debug( "Added module " + moduleDescriptor.getName() + " in " + archetypeDescriptor.getName() );
}
restoreParentArtifactId( reverseProperties, parentArtifactId );
restoreArtifactId( reverseProperties, pom.getArtifactId() );