Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
InjectArtifactHandlerMojo |
|
| 2.0;2 |
1 | package com.aurea.maven.plugins.util; | |
2 | ||
3 | /* | |
4 | * Sonatype Application Build Lifecycle | |
5 | * Copyright (C) 2009 Sonatype, Inc. | |
6 | * | |
7 | * This program is free software: you can redistribute it and/or modify | |
8 | * it under the terms of the GNU General Public License as published by | |
9 | * the Free Software Foundation, either version 3 of the License, or | |
10 | * (at your option) any later version. | |
11 | * | |
12 | * This program is distributed in the hope that it will be useful, | |
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 | * GNU General Public License for more details. | |
16 | * | |
17 | * You should have received a copy of the GNU General Public License | |
18 | * along with this program. If not, see http://www.gnu.org/licenses/. | |
19 | * | |
20 | */ | |
21 | ||
22 | import java.util.HashSet; | |
23 | import java.util.Set; | |
24 | ||
25 | import org.apache.maven.artifact.Artifact; | |
26 | import org.apache.maven.artifact.handler.ArtifactHandler; | |
27 | import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager; | |
28 | import org.apache.maven.execution.MavenSession; | |
29 | import org.apache.maven.plugin.Mojo; | |
30 | import org.apache.maven.plugin.MojoExecutionException; | |
31 | import org.apache.maven.plugin.logging.Log; | |
32 | import org.apache.maven.project.MavenProject; | |
33 | ||
34 | /** | |
35 | * Injects an {@link ArtifactHandler} instance, loaded from build extensions, into the current project's | |
36 | * {@link Artifact} instance. The new handler is loaded using the project's packaging. This mojo compensates for bugs in | |
37 | * the build-extension handling of Maven versions prior to 2.2.1. | |
38 | * | |
39 | * @goal inject-artifact-handler | |
40 | * @phase initialize | |
41 | */ | |
42 | 0 | public class InjectArtifactHandlerMojo implements Mojo { |
43 | ||
44 | ||
45 | /** | |
46 | * The current project instance. | |
47 | * | |
48 | * @parameter default-value="${project}" | |
49 | * @required | |
50 | * @readonly | |
51 | */ | |
52 | private MavenProject project; | |
53 | ||
54 | /** | |
55 | * The {@link ArtifactHandlerManager} into which any extension {@link ArtifactHandler} instances should have been | |
56 | * injected when the extensions were loaded. | |
57 | * | |
58 | * @component | |
59 | */ | |
60 | private ArtifactHandlerManager artifactHandlerManager; | |
61 | ||
62 | /** | |
63 | * @parameter default-value="${session}" | |
64 | * @required | |
65 | * @readonly | |
66 | */ | |
67 | private MavenSession session; | |
68 | ||
69 | ||
70 | private Log log; | |
71 | ||
72 | /** | |
73 | * {@inheritDoc} | |
74 | */ | |
75 | @SuppressWarnings("deprecation") | |
76 | public void execute() throws MojoExecutionException { | |
77 | ||
78 | 0 | getLog().info("Injecting the Artifact Handlers anyway."); |
79 | // | |
80 | // Map<String, ?> handlerDescriptors = session.getContainer().getComponentDescriptorMap(ArtifactHandler.ROLE); | |
81 | // if (handlerDescriptors != null) { | |
82 | // getLog().info("Registering all unregistered ArtifactHandlers..."); | |
83 | // | |
84 | // if (artifactHandlerManager instanceof DefaultArtifactHandlerManager) { | |
85 | // Set<String> existingHints = ((DefaultArtifactHandlerManager) artifactHandlerManager).getHandlerTypes(); | |
86 | // if (existingHints != null) { | |
87 | // for (String hint : existingHints) { | |
88 | // getLog().info("DEBUG - REMOVE : " + hint + " - ext: " + ((DefaultArtifactHandlerManager) artifactHandlerManager).getArtifactHandler(hint).getExtension()); | |
89 | // | |
90 | // handlerDescriptors.remove(hint); | |
91 | // } | |
92 | // } | |
93 | // } | |
94 | // | |
95 | // if (handlerDescriptors.isEmpty()) { | |
96 | // getLog().info("All ArtifactHandlers are registered. Continuing..."); | |
97 | // } else { | |
98 | // Map<String, ArtifactHandler> unregisteredHandlers = new HashMap<String, ArtifactHandler>(handlerDescriptors | |
99 | // .size()); | |
100 | // | |
101 | // for (String hint : handlerDescriptors.keySet()) { | |
102 | // try { | |
103 | // unregisteredHandlers.put(hint, (ArtifactHandler) session.lookup(ArtifactHandler.ROLE, hint)); | |
104 | // getLog().info("Adding ArtifactHandler for: " + hint); | |
105 | // } catch (ComponentLookupException e) { | |
106 | // getLog().warn("Failed to lookup ArtifactHandler with hint: " + hint + ". Reason: " + e.getMessage(), e); | |
107 | // } | |
108 | // } | |
109 | // | |
110 | // artifactHandlerManager.addHandlers(unregisteredHandlers); | |
111 | // } | |
112 | // } | |
113 | ||
114 | 0 | getLog().info("Setting ArtifactHandler on project-artifact: " + project.getId() + "..."); |
115 | ||
116 | 0 | Set<Artifact> artifacts = new HashSet<Artifact>(); |
117 | 0 | artifacts.add(project.getArtifact()); |
118 | ||
119 | 0 | Set<Artifact> dependencyArtifacts = project.getDependencyArtifacts(); |
120 | 0 | if (dependencyArtifacts != null && !dependencyArtifacts.isEmpty()) { |
121 | 0 | artifacts.addAll(dependencyArtifacts); |
122 | } | |
123 | ||
124 | 0 | for (Artifact artifact : artifacts) { |
125 | 0 | String type = artifact.getType(); |
126 | 0 | ArtifactHandler handler = artifactHandlerManager.getArtifactHandler(type); |
127 | ||
128 | 0 | getLog().debug( |
129 | "Artifact: " + artifact.getId() + "\nType: " + type + "\nArtifactHandler extension: " | |
130 | + handler.getExtension()); | |
131 | ||
132 | 0 | artifact.setArtifactHandler(handler); |
133 | 0 | } |
134 | ||
135 | 0 | getLog().info("...done."); |
136 | 0 | } |
137 | ||
138 | /** | |
139 | * {@inheritDoc} | |
140 | */ | |
141 | public Log getLog() { | |
142 | ||
143 | 0 | return log; |
144 | } | |
145 | ||
146 | ||
147 | /** | |
148 | * {@inheritDoc} | |
149 | */ | |
150 | public void setLog(final Log _log) { | |
151 | ||
152 | 0 | this.log = _log; |
153 | 0 | } |
154 | ||
155 | } |