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 private ArtifactRepository localRepository;
85
86
87
88
89
90
91
92 private String archetypeGroupId;
93
94
95
96
97
98
99
100 private String archetypeArtifactId;
101
102
103
104
105
106
107
108 private String archetypeVersion;
109
110
111
112
113
114
115 private String groupId;
116
117
118
119
120
121
122 private String artifactId;
123
124
125
126
127
128
129
130 private String version;
131
132
133
134
135
136
137 private String packageName;
138
139
140
141
142
143
144
145
146 private List<ArtifactRepository> pomRemoteRepositories;
147
148
149
150
151
152
153 private String remoteRepositories;
154
155
156
157
158
159
160 private MavenProject project;
161
162
163
164
165 private String basedir;
166
167 public void execute()
168 throws MojoExecutionException
169 {
170 getLog().warn( "This goal is deprecated. Please use mvn archetype:generate instead" );
171
172
173
174
175
176
177
178
179
180
181
182
183
184 if ( project.getFile() != null && groupId == null )
185 {
186 groupId = project.getGroupId();
187 }
188
189 if ( packageName == null )
190 {
191 getLog().info( "Defaulting package to group ID: " + groupId );
192
193 packageName = groupId;
194 }
195
196
197 List<ArtifactRepository> archetypeRemoteRepositories = new ArrayList<ArtifactRepository>( pomRemoteRepositories );
198
199 if ( remoteRepositories != null )
200 {
201 getLog().info( "We are using command line specified remote repositories: " + remoteRepositories );
202
203 archetypeRemoteRepositories = new ArrayList<ArtifactRepository>();
204
205 String[] s = StringUtils.split( remoteRepositories, "," );
206
207 for ( int i = 0; i < s.length; i++ )
208 {
209 archetypeRemoteRepositories.add( createRepository( s[i], "id" + i ) );
210 }
211 }
212
213 try
214 {
215 ArchetypeGenerationRequest request = new ArchetypeGenerationRequest()
216 .setPackage( packageName )
217 .setGroupId( groupId )
218 .setArtifactId( artifactId )
219 .setVersion( version )
220 .setArchetypeGroupId( archetypeGroupId )
221 .setArchetypeArtifactId( archetypeArtifactId )
222 .setArchetypeVersion( archetypeVersion )
223 .setLocalRepository( localRepository )
224 .setRemoteArtifactRepositories( archetypeRemoteRepositories )
225 .setOutputDirectory( basedir );
226
227 archetype.createArchetype( request, createRepository( "http://repo1.maven.org/maven2", "central" ) );
228 }
229 catch ( UnknownArchetype e )
230 {
231 throw new MojoExecutionException( "Error creating from archetype", e );
232 }
233 catch ( ArchetypeNotFoundException e )
234 {
235 throw new MojoExecutionException( "Error creating from archetype", e );
236 }
237 catch ( ArchetypeDescriptorException e )
238 {
239 throw new MojoExecutionException( "Error creating from archetype", e );
240 }
241 catch ( ArchetypeTemplateProcessingException e )
242 {
243 throw new MojoExecutionException( "Error creating from archetype", e );
244 }
245 }
246
247
248
249 private ArtifactRepository createRepository( String url, String repositoryId )
250 {
251
252
253
254
255
256 String updatePolicyFlag = ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS;
257
258 String checksumPolicyFlag = ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN;
259
260 ArtifactRepositoryPolicy snapshotsPolicy =
261 new ArtifactRepositoryPolicy( true, updatePolicyFlag, checksumPolicyFlag );
262
263 ArtifactRepositoryPolicy releasesPolicy =
264 new ArtifactRepositoryPolicy( true, updatePolicyFlag, checksumPolicyFlag );
265
266 return artifactRepositoryFactory.createArtifactRepository( repositoryId, url, defaultArtifactRepositoryLayout,
267 snapshotsPolicy, releasesPolicy );
268 }
269 }
270