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 org.apache.maven.archetype.ArchetypeGenerationRequest;
23 import org.apache.maven.archetype.ArchetypeGenerationResult;
24 import org.apache.maven.archetype.ArchetypeManager;
25 import org.apache.maven.artifact.repository.ArtifactRepository;
26 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
27 import org.apache.maven.artifact.repository.MavenArtifactRepository;
28 import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
29 import org.apache.maven.project.DefaultProjectBuildingRequest;
30 import org.apache.maven.project.ProjectBuildingRequest;
31 import org.apache.maven.repository.internal.MavenRepositorySystemSession;
32 import org.codehaus.plexus.PlexusTestCase;
33
34 import java.io.File;
35 import java.util.Properties;
36
37 import org.apache.maven.archetype.catalog.Archetype;
38 import org.apache.maven.archetype.catalog.ArchetypeCatalog;
39 import org.codehaus.plexus.util.FileUtils;
40 import org.sonatype.aether.impl.internal.SimpleLocalRepositoryManager;
41
42
43 public class ArchetypeGenerationTest
44 extends PlexusTestCase
45 {
46 public void testProjectGenerationFromAnArchetype()
47 throws Exception
48 {
49 ArchetypeManager archetype = (ArchetypeManager) lookup( ArchetypeManager.ROLE );
50
51
52
53
54 ArtifactRepository localRepository = createRepository(
55 new File( getBasedir(), "target/test-classes/repositories/local" )
56 .toURI().toURL().toExternalForm(), "local-repo" );
57
58 ProjectBuildingRequest buildingRequest = new DefaultProjectBuildingRequest();
59 MavenRepositorySystemSession repositorySession = new MavenRepositorySystemSession();
60 repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManager( "target/test-classes/repositories/central" ) );
61 buildingRequest.setRepositorySession( repositorySession );
62
63 ArchetypeCatalog catalog = archetype.getLocalCatalog( buildingRequest );
64
65 System.err.println( "archetypes => " + catalog.getArchetypes() );
66
67
68
69 Archetype selection = (Archetype) catalog.getArchetypes().get( catalog.getArchetypes().size() - 1 );
70
71 System.err.println( "Selected OldArchetype = " + selection );
72
73
74 String groupId = "com.mycompany";
75
76 String artifactId = "app";
77
78 String version = "1.0.0";
79
80 String packageName = "org.mycompany.app";
81
82
83 File outputDirectory = new File( getBasedir(), "target/test-classes/projects/archetyper-generate-1" );
84 FileUtils.forceDelete(outputDirectory);
85
86 ArchetypeGenerationRequest agr = new ArchetypeGenerationRequest( selection )
87 .setOutputDirectory( outputDirectory.getAbsolutePath() )
88 .setLocalRepository( localRepository )
89 .setGroupId( groupId )
90 .setArtifactId( artifactId )
91 .setVersion( version )
92 .setPackage( packageName );
93
94 Properties archetypeRequiredProperties = new Properties();
95 archetypeRequiredProperties.setProperty( "property-with-default-1", "value-1" );
96 archetypeRequiredProperties.setProperty( "property-with-default-2", "value-2" );
97 archetypeRequiredProperties.setProperty( "property-with-default-3", "value-3" );
98 archetypeRequiredProperties.setProperty( "property-with-default-4", "value-4" );
99 archetypeRequiredProperties.setProperty( "property-without-default-1", "some-value-1" );
100 archetypeRequiredProperties.setProperty( "property-without-default-2", "some-value-2" );
101 archetypeRequiredProperties.setProperty( "property-without-default-3", "some-value-3" );
102 archetypeRequiredProperties.setProperty( "property-without-default-4", "some-value-4" );
103 agr.setProperties( archetypeRequiredProperties );
104 agr.setProjectBuildingRequest( buildingRequest );
105
106
107
108 ArchetypeGenerationResult result = archetype.generateProjectFromArchetype( agr );
109
110 if ( result.getCause() != null )
111 {
112 result.getCause().printStackTrace( System.err );
113 fail( result.getCause().getMessage() );
114 }
115 }
116
117 private ArtifactRepository createRepository( String url, String repositoryId )
118 {
119 String updatePolicyFlag = ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS;
120
121 String checksumPolicyFlag = ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN;
122
123 ArtifactRepositoryPolicy snapshotsPolicy =
124 new ArtifactRepositoryPolicy( true, updatePolicyFlag, checksumPolicyFlag );
125
126 ArtifactRepositoryPolicy releasesPolicy =
127 new ArtifactRepositoryPolicy( true, updatePolicyFlag, checksumPolicyFlag );
128
129 return new MavenArtifactRepository( repositoryId, url, new DefaultRepositoryLayout() , snapshotsPolicy,
130 releasesPolicy );
131 }
132
133
134 }