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.exception.UnknownArchetype;
23 import org.apache.maven.archetype.old.OldArchetype;
24 import org.apache.maven.archetype.old.ArchetypeDescriptorException;
25 import org.apache.maven.archetype.old.ArchetypeNotFoundException;
26 import org.apache.maven.archetype.old.ArchetypeTemplateProcessingException;
27 import org.apache.maven.artifact.repository.ArtifactRepository;
28 import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
29 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
30 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
31 import org.apache.maven.plugin.AbstractMojo;
32 import org.apache.maven.plugin.MojoExecutionException;
33 import org.apache.maven.project.MavenProject;
34 import org.codehaus.plexus.util.StringUtils;
35
36 import java.util.ArrayList;
37 import java.util.HashMap;
38 import java.util.List;
39 import java.util.Map;
40
41
42
43
44
45
46
47
48
49
50
51
52 public class MavenArchetypeMojo
53 extends AbstractMojo
54 {
55
56
57
58
59
60
61 private OldArchetype archetype;
62
63
64
65
66
67
68
69 private ArtifactRepositoryFactory artifactRepositoryFactory;
70
71
72
73
74
75
76 private ArtifactRepositoryLayout defaultArtifactRepositoryLayout;
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 private List pomRemoteRepositories;
148
149
150
151
152
153
154 private String remoteRepositories;
155
156
157
158
159
160
161 private MavenProject project;
162
163
164
165
166 private String basedir;
167
168 public void execute()
169 throws MojoExecutionException
170 {
171 getLog().warn( "This goal is deprecated. Please use mvn archetype:generate instead" );
172
173
174
175
176
177
178
179
180
181
182
183
184
185 if ( project.getFile() != null && groupId == null )
186 {
187 groupId = project.getGroupId();
188 }
189
190 if ( packageName == null )
191 {
192 getLog().info( "Defaulting package to group ID: " + groupId );
193
194 packageName = groupId;
195 }
196
197
198 Map parameters = new HashMap();
199
200 parameters.put( "basedir", basedir );
201
202 parameters.put( "package", packageName );
203
204 parameters.put( "packageName", packageName );
205
206 parameters.put( "groupId", groupId );
207
208 parameters.put( "artifactId", artifactId );
209
210 parameters.put( "version", version );
211
212 List archetypeRemoteRepositories = new ArrayList( pomRemoteRepositories );
213
214 if ( remoteRepositories != null )
215 {
216 getLog().info( "We are using command line specified remote repositories: " + remoteRepositories );
217
218 archetypeRemoteRepositories = new ArrayList();
219
220 String[] s = StringUtils.split( remoteRepositories, "," );
221
222 for ( int i = 0; i < s.length; i++ )
223 {
224 archetypeRemoteRepositories.add( createRepository( s[i], "id" + i ) );
225 }
226 }
227
228 try
229 {
230 archetype.createArchetype( archetypeGroupId, archetypeArtifactId, archetypeVersion,
231 createRepository( "http://repo1.maven.org/maven2", "central" ), localRepository,
232 archetypeRemoteRepositories, parameters );
233 }
234 catch (UnknownArchetype e)
235 {
236 throw new MojoExecutionException( "Error creating from archetype", e );
237 }
238 catch ( ArchetypeNotFoundException e )
239 {
240 throw new MojoExecutionException( "Error creating from archetype", e );
241 }
242 catch ( ArchetypeDescriptorException e )
243 {
244 throw new MojoExecutionException( "Error creating from archetype", e );
245 }
246 catch ( ArchetypeTemplateProcessingException e )
247 {
248 throw new MojoExecutionException( "Error creating from archetype", e );
249 }
250 }
251
252
253
254 public ArtifactRepository createRepository( String url, String repositoryId )
255 {
256
257
258
259
260
261 String updatePolicyFlag = ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS;
262
263 String checksumPolicyFlag = ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN;
264
265 ArtifactRepositoryPolicy snapshotsPolicy =
266 new ArtifactRepositoryPolicy( true, updatePolicyFlag, checksumPolicyFlag );
267
268 ArtifactRepositoryPolicy releasesPolicy =
269 new ArtifactRepositoryPolicy( true, updatePolicyFlag, checksumPolicyFlag );
270
271 return artifactRepositoryFactory.createArtifactRepository( repositoryId, url, defaultArtifactRepositoryLayout,
272 snapshotsPolicy, releasesPolicy );
273 }
274 }
275