1 package org.apache.maven.archetype.test;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.File;
23
24 import org.apache.maven.archetype.ArchetypeGenerationRequest;
25 import org.apache.maven.archetype.ArchetypeGenerationResult;
26 import org.apache.maven.archetype.ArchetypeManager;
27 import org.apache.maven.archetype.catalog.Archetype;
28 import org.apache.maven.archetype.catalog.ArchetypeCatalog;
29 import org.apache.maven.artifact.repository.ArtifactRepository;
30 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
31 import org.apache.maven.artifact.repository.MavenArtifactRepository;
32 import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
33 import org.apache.maven.project.DefaultProjectBuildingRequest;
34 import org.apache.maven.project.ProjectBuildingRequest;
35 import org.apache.maven.repository.internal.MavenRepositorySystemSession;
36 import org.codehaus.plexus.PlexusTestCase;
37 import org.codehaus.plexus.util.FileUtils;
38 import org.sonatype.aether.impl.internal.SimpleLocalRepositoryManager;
39
40
41
42
43
44 public class InternalCatalogArchetypesVerificationTest
45 extends PlexusTestCase
46 {
47 private static final String CENTRAL = "https://repo.maven.apache.org/maven2";
48
49 public void testInternalCatalog()
50 throws Exception
51 {
52 ArtifactRepository localRepository = createRepository( new File( getBasedir(),
53 "target/test-classes/repositories/local" ).toURI().toURL().toExternalForm(),
54 "local-repo");
55
56 File outputDirectory = new File( getBasedir(), "target/internal-archetypes-projects" );
57 outputDirectory.mkdirs();
58 FileUtils.cleanDirectory( outputDirectory );
59
60 ArchetypeManager archetype = (ArchetypeManager) lookup( ArchetypeManager.class.getName() );
61
62 ArchetypeCatalog catalog = archetype.getInternalCatalog();
63
64 int count = 1;
65 for ( Archetype a : catalog.getArchetypes() )
66 {
67 Archetype ar = new Archetype();
68 ar.setGroupId( a.getGroupId() );
69 ar.setArtifactId( a.getArtifactId() );
70 ar.setVersion( a.getVersion() );
71 ar.setDescription( a.getDescription() );
72 ar.setGoals( a.getGoals() );
73 ar.setProperties( a.getProperties() );
74 ar.setRepository( a.getRepository() );
75 if ( ar.getRepository() == null )
76 {
77 ar.setRepository( CENTRAL );
78 }
79
80 ArchetypeGenerationRequest request =
81 new ArchetypeGenerationRequest( ar )
82 .setGroupId( "org.apache.maven.archetype.test" )
83 .setArtifactId( "archetype" + count )
84 .setVersion( "1.0-SNAPSHOT" )
85 .setPackage( "com.acme" )
86 .setOutputDirectory( outputDirectory.getPath() )
87 .setLocalRepository( localRepository );
88
89 ProjectBuildingRequest buildingRequest = new DefaultProjectBuildingRequest();
90 MavenRepositorySystemSession repositorySession = new MavenRepositorySystemSession();
91 repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManager( localRepository.getBasedir() ) );
92 buildingRequest.setRepositorySession( repositorySession );
93 request.setProjectBuildingRequest( buildingRequest );
94
95 ArchetypeGenerationResult generationResult = archetype.generateProjectFromArchetype( request );
96
97 assertTrue ( "Archetype wasn't generated successfully", generationResult.getCause() == null );
98
99 count++;
100 }
101 }
102
103 private ArtifactRepository createRepository( String url, String repositoryId )
104 {
105 String updatePolicyFlag = ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS;
106
107 String checksumPolicyFlag = ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN;
108
109 ArtifactRepositoryPolicy snapshotsPolicy =
110 new ArtifactRepositoryPolicy( true, updatePolicyFlag, checksumPolicyFlag );
111
112 ArtifactRepositoryPolicy releasesPolicy =
113 new ArtifactRepositoryPolicy( true, updatePolicyFlag, checksumPolicyFlag );
114
115 return new MavenArtifactRepository( repositoryId, url, new DefaultRepositoryLayout() , snapshotsPolicy,
116 releasesPolicy );
117 }
118
119 }