1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package net.sourceforge.osgi.deployment.maven.mojo;
23
24 import java.io.File;
25 import java.util.Arrays;
26 import java.util.List;
27
28 import net.sourceforge.osgi.deployment.maven.DeploymentPluginException;
29 import net.sourceforge.osgi.deployment.maven.DeploymentPlugin;
30 import net.sourceforge.osgi.deployment.maven.IDeploymentPluginContext;
31 import net.sourceforge.osgi.deployment.maven.container.BundleResource;
32 import net.sourceforge.osgi.deployment.maven.container.DeploymentPackageInfo;
33
34 import org.apache.maven.artifact.Artifact;
35 import org.apache.maven.artifact.factory.ArtifactFactory;
36 import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
37 import org.apache.maven.artifact.repository.ArtifactRepository;
38 import org.apache.maven.artifact.resolver.ArtifactResolver;
39 import org.apache.maven.plugin.AbstractMojo;
40 import org.apache.maven.plugin.MojoExecutionException;
41 import org.apache.maven.plugin.MojoFailureException;
42 import org.apache.maven.plugin.logging.Log;
43 import org.apache.maven.project.MavenProject;
44 import org.codehaus.plexus.archiver.manager.ArchiverManager;
45
46
47
48
49
50
51
52
53
54
55 public class DeploymentPluginMojoContext extends AbstractMojo implements IDeploymentPluginContext {
56
57
58
59
60
61
62 private File m_outputDirectory;
63
64
65
66
67
68
69
70 private File m_baseDir;
71
72
73
74
75
76
77
78 private DeploymentPackageInfo m_deploymentPackageInfo = null;
79
80
81
82
83
84
85 private File m_manifestLocation;
86
87
88
89
90
91
92
93
94 private MavenProject m_project;
95
96
97
98
99
100
101
102 private String m_buildDirectory;
103
104
105
106
107
108
109
110 private List< String > m_supportedProjectTypes = Arrays.asList(new String[] { "deployment-package" });
111
112
113
114
115
116
117
118 private ArtifactRepository m_localRepository;
119
120
121
122
123
124
125
126 private List< ArtifactRepository > m_remoteRepositories;
127
128
129
130
131
132
133
134 private boolean m_writeExtraData = true;
135
136
137
138
139 private ArtifactFactory m_artifactFactory;
140
141
142
143
144 private ArtifactResolver m_artifactresolver;
145
146
147
148
149 private ArtifactHandlerManager m_artifactHandlerManager;
150
151
152
153
154 private ArchiverManager m_archiverManager;
155
156
157
158
159
160
161
162
163
164 public final void execute() throws MojoExecutionException, MojoFailureException {
165 try {
166
167
168 DeploymentPackageInfo deploymentPackageInfo = getDeploymentPackageInfo();
169 if (deploymentPackageInfo == null) {
170 throw new MojoExecutionException("No DeploymentPackageInfo provided");
171 }
172
173 for (final BundleResource bundleResource : deploymentPackageInfo.getBundleResources()) {
174 bundleResource.setDeploymentContext(this);
175 }
176
177 new DeploymentPlugin(this).execute();
178 } catch (final RuntimeException e) {
179 throw new MojoExecutionException("Error while executing plugin ", e);
180 } catch (final Throwable e) {
181 throw new MojoExecutionException("Error while executing plugin ", e);
182 }
183 }
184
185
186
187
188
189 public final Log getLogger() {
190 return super.getLog();
191 }
192
193
194
195
196
197 public final File getOutputDirectory() {
198 return m_outputDirectory;
199 }
200
201
202
203
204
205 public final void setOutputDirectory(final File p_outputDirectory) {
206 m_outputDirectory = p_outputDirectory;
207 }
208
209
210
211
212
213 public final File getBaseDir() {
214 return m_baseDir;
215 }
216
217
218
219
220
221 public final File getManifestLocation() {
222 return m_manifestLocation;
223 }
224
225
226
227
228
229 public final MavenProject getProject() {
230 return m_project;
231 }
232
233
234
235
236
237 public final String getBuildDirectory() {
238 return m_buildDirectory;
239 }
240
241
242
243
244
245 public final List< String > getSupportedProjectTypes() {
246 return m_supportedProjectTypes;
247 }
248
249
250
251
252
253 public final ArtifactRepository getLocalRepository() {
254 return m_localRepository;
255 }
256
257
258
259
260
261 public final List< ArtifactRepository > getRemoteRepositories() {
262 return m_remoteRepositories;
263 }
264
265
266
267
268
269 public final ArtifactFactory getArtifactFactory() {
270 return m_artifactFactory;
271 }
272
273
274
275
276
277 public final ArtifactResolver getArtifactResolver() {
278 return m_artifactresolver;
279 }
280
281
282
283
284
285 public final ArtifactHandlerManager getArtifactHandlerManager() {
286 return m_artifactHandlerManager;
287 }
288
289
290
291
292
293 public final ArchiverManager getArchiverManager() {
294 return m_archiverManager;
295 }
296
297
298
299
300
301 public final DeploymentPackageInfo getDeploymentPackageInfo() {
302 return m_deploymentPackageInfo;
303 }
304
305
306
307
308
309 public final boolean isWriteExtraData() {
310 return m_writeExtraData;
311 }
312
313
314
315
316
317
318
319 public final String getPluginName() {
320 return "osgi-deployment-maven-plugin";
321 }
322
323
324
325
326
327
328
329 public final String getPluginVersion() {
330 return "0.1.3";
331 }
332
333
334
335
336
337 public final void setBaseDir(final File p_baseDir) {
338 m_baseDir = p_baseDir;
339 }
340
341
342
343
344
345 public final void setManifestLocation(final File p_manifestLocation) {
346 m_manifestLocation = p_manifestLocation;
347 }
348
349
350
351
352
353 public final void setProject(final MavenProject p_project) {
354 m_project = p_project;
355 }
356
357
358
359
360
361 public final void setBuildDirectory(final String p_buildDirectory) {
362 m_buildDirectory = p_buildDirectory;
363 }
364
365
366
367
368
369 public final void setSupportedProjectTypes(final List< String > p_supportedProjectTypes) {
370 m_supportedProjectTypes = p_supportedProjectTypes;
371 }
372
373
374
375
376
377 public final void setLocalRepository(final ArtifactRepository p_localRepository) {
378 m_localRepository = p_localRepository;
379 }
380
381
382
383
384
385 public final void setRemoteRepositories(final List< ArtifactRepository > p_remoteRepositories) {
386 m_remoteRepositories = p_remoteRepositories;
387 }
388
389
390
391
392
393 public final void setArtifactFactory(final ArtifactFactory p_artifactFactory) {
394 m_artifactFactory = p_artifactFactory;
395 }
396
397
398
399
400
401 public final void setArtifactResolver(final ArtifactResolver p_artifactResolver) {
402 m_artifactresolver = p_artifactResolver;
403 }
404
405
406
407
408
409 public final void setArtifactHandlerManager(final ArtifactHandlerManager p_artifactHandlerManager) {
410 m_artifactHandlerManager = p_artifactHandlerManager;
411 }
412
413
414
415
416
417 public final void setArchiverManager(final ArchiverManager p_archiverManager) {
418 m_archiverManager = p_archiverManager;
419 }
420
421
422
423
424
425 public final void setDeploymentPackageInfo(final DeploymentPackageInfo p_deploymentPackageInfo) {
426 m_deploymentPackageInfo = p_deploymentPackageInfo;
427 }
428
429
430
431
432
433 public final void setDeploymentPackage(final DeploymentPackageInfo p_deploymentPackageInfo) {
434 setDeploymentPackageInfo(p_deploymentPackageInfo);
435 }
436
437
438
439
440
441 public final void setWriteExtraData(final boolean p_writeExtraData) {
442 m_writeExtraData = p_writeExtraData;
443 }
444
445
446
447
448
449
450
451
452
453
454
455
456 public final File resolveResource(final String p_groupId, final String p_artifactId, final String p_version) {
457 try {
458 final Artifact artifact = getArtifactFactory().createArtifact(p_groupId, p_artifactId, p_version, Artifact.SCOPE_RUNTIME, "jar");
459 getArtifactResolver().resolve(artifact, getRemoteRepositories(), getLocalRepository());
460 final File artifactFile = artifact.getFile();
461 return artifactFile;
462 } catch (final Exception e) {
463
464 throw new DeploymentPluginException("Error while resolving resource " + p_groupId + ":" + p_artifactId + ":" + p_version, e);
465 }
466 }
467
468 }