1 package org.apache.maven.archetype.mojos;
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.exception.UnknownArchetype;
24 import org.apache.maven.archetype.old.OldArchetype;
25 import org.apache.maven.archetype.old.ArchetypeDescriptorException;
26 import org.apache.maven.archetype.old.ArchetypeNotFoundException;
27 import org.apache.maven.archetype.old.ArchetypeTemplateProcessingException;
28 import org.apache.maven.artifact.repository.ArtifactRepository;
29 import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
30 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
31 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
32 import org.apache.maven.plugin.AbstractMojo;
33 import org.apache.maven.plugin.MojoExecutionException;
34 import org.apache.maven.project.MavenProject;
35 import org.codehaus.plexus.util.StringUtils;
36
37 import java.util.ArrayList;
38 import java.util.List;
39
40
41
42
43
44
45
46
47
48
49
50
51 public class MavenArchetypeMojo
52 extends AbstractMojo
53 {
54
55
56
57
58
59
60 private OldArchetype archetype;
61
62
63
64
65
66
67
68 private ArtifactRepositoryFactory artifactRepositoryFactory;
69
70
71
72
73
74
75 private ArtifactRepositoryLayout defaultArtifactRepositoryLayout;
76
77
78
79
80
81
82
83
84
85 private ArtifactRepository localRepository;
86
87
88
89
90
91
92
93 private String archetypeGroupId;
94
95
96
97
98
99
100
101 private String archetypeArtifactId;
102
103
104
105
106
107
108
109 private String archetypeVersion;
110
111
112
113
114
115
116 private String groupId;
117
118
119
120
121
122
123 private String artifactId;
124
125
126
127
128
129
130
131 private String version;
132
133
134
135
136
137
138 private String packageName;
139
140
141
142
143
144
145
146
147
148 private List<ArtifactRepository> pomRemoteRepositories;
149
150
151
152
153
154
155 private String remoteRepositories;
156
157
158
159
160
161
162
163
164 private MavenProject project;
165
166
167
168
169 private String basedir;
170
171 public void execute()
172 throws MojoExecutionException
173 {
174 getLog().warn( "This goal is deprecated. Please use mvn archetype:generate instead" );
175
176
177
178
179
180
181
182
183
184
185
186
187
188 if ( project.getFile() != null && groupId == null )
189 {
190 groupId = project.getGroupId();
191 }
192
193 if ( packageName == null )
194 {
195 getLog().info( "Defaulting package to group ID: " + groupId );
196
197 packageName = groupId;
198 }
199
200
201 List<ArtifactRepository> archetypeRemoteRepositories = new ArrayList<ArtifactRepository>( pomRemoteRepositories );
202
203 if ( remoteRepositories != null )
204 {
205 getLog().info( "We are using command line specified remote repositories: " + remoteRepositories );
206
207 archetypeRemoteRepositories = new ArrayList<ArtifactRepository>();
208
209 String[] s = StringUtils.split( remoteRepositories, "," );
210
211 for ( int i = 0; i < s.length; i++ )
212 {
213 archetypeRemoteRepositories.add( createRepository( s[i], "id" + i ) );
214 }
215 }
216
217 try
218 {
219 ArchetypeGenerationRequest request = new ArchetypeGenerationRequest()
220 .setPackage( packageName )
221 .setGroupId( groupId )
222 .setArtifactId( artifactId )
223 .setVersion( version )
224 .setArchetypeGroupId( archetypeGroupId )
225 .setArchetypeArtifactId( archetypeArtifactId )
226 .setArchetypeVersion( archetypeVersion )
227 .setLocalRepository( localRepository )
228 .setRemoteArtifactRepositories( archetypeRemoteRepositories )
229 .setOutputDirectory( basedir );
230
231 archetype.createArchetype( request, createRepository( "http://repo.maven.apache.org/maven2", "central" ) );
232 }
233 catch ( UnknownArchetype e )
234 {
235 throw new MojoExecutionException( "Error creating from archetype", e );
236 }
237 catch ( ArchetypeNotFoundException e )
238 {
239 throw new MojoExecutionException( "Error creating from archetype", e );
240 }
241 catch ( ArchetypeDescriptorException e )
242 {
243 throw new MojoExecutionException( "Error creating from archetype", e );
244 }
245 catch ( ArchetypeTemplateProcessingException e )
246 {
247 throw new MojoExecutionException( "Error creating from archetype", e );
248 }
249 }
250
251
252
253 private ArtifactRepository createRepository( String url, String repositoryId )
254 {
255
256
257
258
259
260 String updatePolicyFlag = ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS;
261
262 String checksumPolicyFlag = ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN;
263
264 ArtifactRepositoryPolicy snapshotsPolicy =
265 new ArtifactRepositoryPolicy( true, updatePolicyFlag, checksumPolicyFlag );
266
267 ArtifactRepositoryPolicy releasesPolicy =
268 new ArtifactRepositoryPolicy( true, updatePolicyFlag, checksumPolicyFlag );
269
270 return artifactRepositoryFactory.createArtifactRepository( repositoryId, url, defaultArtifactRepositoryLayout,
271 snapshotsPolicy, releasesPolicy );
272 }
273 }
274