File outputDirectory = new File( getBasedir(), "target/internal-archetypes-projects" );
outputDirectory.mkdirs();
ArchetypeManager archetype = (ArchetypeManager) lookup( ArchetypeManager.class.getName() );
ArchetypeCatalog result = archetype.getInternalCatalog();
List<Archetype> archetypesUsed = new ArrayList<Archetype>();
List<Archetype> archetypesRemoved = new ArrayList<Archetype>();
int count = 1;
for ( Archetype a : result.getArchetypes() )
{
Archetype ar = new Archetype();
ar.setGroupId( a.getGroupId() );
ar.setArtifactId( a.getArtifactId() );
ar.setVersion( "RELEASE" );
ar.setDescription( a.getDescription() );
ar.setGoals( a.getGoals() );
ar.setProperties( a.getProperties() );
ar.setRepository( a.getRepository() );
if ( ar.getRepository() == null )
{
ar.setRepository( "http://repo1.maven.org/maven2" );
}
System.err.println( "\n\n\n\n\n\nTesting archetype " + ar );
ArchetypeGenerationRequest request =
new ArchetypeGenerationRequest( ar )
.setGroupId( "groupId" + count )
.setArtifactId( "artifactId" + count )
.setVersion( "version" + count )
.setPackage( "package" + count )
.setOutputDirectory( outputDirectory.getPath() )
.setLocalRepository( localRepository );
ArchetypeGenerationResult generationResult = archetype.generateProjectFromArchetype( request );
if ( generationResult != null && generationResult.getCause() != null )
{
ar.setVersion( a.getVersion() );
request =
new ArchetypeGenerationRequest( ar )
.setGroupId( "groupId" + count )
.setArtifactId( "artifactId" + count )
.setVersion( "version" + count )
.setPackage( "package" + count )
.setOutputDirectory( outputDirectory.getPath() )
.setLocalRepository( localRepository );
generationResult = archetype.generateProjectFromArchetype( request );
if ( generationResult != null && generationResult.getCause() != null )
{
archetypesRemoved.add( a );
}
else
{
archetypesUsed.add( a );
}
}
else
{
archetypesUsed.add( a );
}
count++;
System.err.println( "\n\n\n\n\n" );
}
result.setArchetypes( archetypesUsed );
StringWriter sw = new StringWriter();
ArchetypeCatalogXpp3Writer acxw = new ArchetypeCatalogXpp3Writer();
acxw.write( sw, result );