1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugin;
20
21 import java.util.List;
22
23 import org.apache.maven.AbstractCoreMavenComponentTestCase;
24 import org.apache.maven.artifact.Artifact;
25 import org.apache.maven.artifact.repository.DefaultRepositoryRequest;
26 import org.apache.maven.artifact.repository.RepositoryRequest;
27 import org.apache.maven.execution.MavenSession;
28 import org.apache.maven.model.Plugin;
29 import org.apache.maven.plugin.descriptor.MojoDescriptor;
30 import org.apache.maven.plugin.descriptor.PluginDescriptor;
31 import org.apache.maven.project.MavenProject;
32 import org.codehaus.plexus.classworlds.realm.ClassRealm;
33 import org.codehaus.plexus.component.annotations.Requirement;
34 import org.codehaus.plexus.component.repository.ComponentDescriptor;
35
36 public class PluginManagerTest extends AbstractCoreMavenComponentTestCase {
37 @Requirement
38 private DefaultBuildPluginManager pluginManager;
39
40 protected void setUp() throws Exception {
41 super.setUp();
42 pluginManager = (DefaultBuildPluginManager) lookup(BuildPluginManager.class);
43 }
44
45 @Override
46 protected void tearDown() throws Exception {
47 pluginManager = null;
48 super.tearDown();
49 }
50
51 protected String getProjectsDirectory() {
52 return "src/test/projects/plugin-manager";
53 }
54
55 public void testPluginLoading() throws Exception {
56 MavenSession session = createMavenSession(null);
57 Plugin plugin = new Plugin();
58 plugin.setGroupId("org.apache.maven.its.plugins");
59 plugin.setArtifactId("maven-it-plugin");
60 plugin.setVersion("0.1");
61 PluginDescriptor pluginDescriptor = pluginManager.loadPlugin(
62 plugin, session.getCurrentProject().getRemotePluginRepositories(), session.getRepositorySession());
63 assertNotNull(pluginDescriptor);
64 }
65
66 public void testMojoDescriptorRetrieval() throws Exception {
67 MavenSession session = createMavenSession(null);
68 String goal = "it";
69 Plugin plugin = new Plugin();
70 plugin.setGroupId("org.apache.maven.its.plugins");
71 plugin.setArtifactId("maven-it-plugin");
72 plugin.setVersion("0.1");
73
74 MojoDescriptor mojoDescriptor = pluginManager.getMojoDescriptor(
75 plugin,
76 goal,
77 session.getCurrentProject().getRemotePluginRepositories(),
78 session.getRepositorySession());
79 assertNotNull(mojoDescriptor);
80 assertEquals(goal, mojoDescriptor.getGoal());
81
82
83
84 PluginDescriptor pluginDescriptor = mojoDescriptor.getPluginDescriptor();
85 assertNotNull(pluginDescriptor);
86 assertEquals("org.apache.maven.its.plugins", pluginDescriptor.getGroupId());
87 assertEquals("maven-it-plugin", pluginDescriptor.getArtifactId());
88 assertEquals("0.1", pluginDescriptor.getVersion());
89 }
90
91
92
93
94
95
96
97
98
99
100
101
102 public void testRemoteResourcesPlugin() throws Exception {
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126 }
127
128
129 public void testSurefirePlugin() throws Exception {
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149 }
150
151 public void testMojoConfigurationIsMergedCorrectly() throws Exception {}
152
153
154
155
156
157
158 public void testMojoWhereInternallyStatedDependencyIsOverriddenByProject() throws Exception {}
159
160
161
162
163
164 public void testMojoThatIsPresentInTheCurrentBuild() throws Exception {}
165
166
167
168
169
170 public void testAggregatorMojo() throws Exception {}
171
172
173
174
175
176 public void testMojoThatRequiresExecutionToAGivenPhaseBeforeExecutingItself() throws Exception {}
177
178
179
180
181
182
183
184 public void testThatPluginDependencyThatHasSystemScopeIsResolved() throws Exception {
185 MavenSession session = createMavenSession(getProject("project-contributing-system-scope-plugin-dep"));
186 MavenProject project = session.getCurrentProject();
187 Plugin plugin = project.getPlugin("org.apache.maven.its.plugins:maven-it-plugin");
188
189 RepositoryRequest repositoryRequest = new DefaultRepositoryRequest();
190 repositoryRequest.setLocalRepository(getLocalRepository());
191 repositoryRequest.setRemoteRepositories(getPluginArtifactRepositories());
192
193 PluginDescriptor pluginDescriptor = pluginManager.loadPlugin(
194 plugin, session.getCurrentProject().getRemotePluginRepositories(), session.getRepositorySession());
195 pluginManager.getPluginRealm(session, pluginDescriptor);
196 List<Artifact> artifacts = pluginDescriptor.getArtifacts();
197
198 for (Artifact a : artifacts) {
199 if (a.getGroupId().equals("org.apache.maven.its.mng3586")
200 && a.getArtifactId().equals("tools")) {
201
202 return;
203 }
204 }
205
206 fail("Can't find the system scoped dependency in the plugin artifacts.");
207 }
208
209
210
211
212
213 protected void assertPluginDescriptor(
214 MojoDescriptor mojoDescriptor, String groupId, String artifactId, String version) {
215 assertNotNull(mojoDescriptor);
216 PluginDescriptor pd = mojoDescriptor.getPluginDescriptor();
217 assertNotNull(pd);
218 assertEquals(groupId, pd.getGroupId());
219 assertEquals(artifactId, pd.getArtifactId());
220 assertEquals(version, pd.getVersion());
221 }
222
223 public void testPluginRealmCache() throws Exception {
224 RepositoryRequest repositoryRequest = new DefaultRepositoryRequest();
225 repositoryRequest.setLocalRepository(getLocalRepository());
226 repositoryRequest.setRemoteRepositories(getPluginArtifactRepositories());
227
228
229 MavenSession session = createMavenSession(getProject("project-contributing-system-scope-plugin-dep"));
230 MavenProject project = session.getCurrentProject();
231 Plugin plugin = project.getPlugin("org.apache.maven.its.plugins:maven-it-plugin");
232
233 PluginDescriptor pluginDescriptor = pluginManager.loadPlugin(
234 plugin, session.getCurrentProject().getRemotePluginRepositories(), session.getRepositorySession());
235 pluginManager.getPluginRealm(session, pluginDescriptor);
236
237 assertEquals(1, pluginDescriptor.getDependencies().size());
238
239 for (ComponentDescriptor<?> descriptor : pluginDescriptor.getComponents()) {
240 assertNotNull(descriptor.getRealm());
241 assertNotNull(descriptor.getImplementationClass());
242 }
243
244
245 session = createMavenSession(getProject("project-contributing-system-scope-plugin-dep"));
246 project = session.getCurrentProject();
247 plugin = project.getPlugin("org.apache.maven.its.plugins:maven-it-plugin");
248
249 pluginDescriptor = pluginManager.loadPlugin(
250 plugin, session.getCurrentProject().getRemotePluginRepositories(), session.getRepositorySession());
251 pluginManager.getPluginRealm(session, pluginDescriptor);
252
253 assertEquals(1, pluginDescriptor.getDependencies().size());
254
255 for (ComponentDescriptor<?> descriptor : pluginDescriptor.getComponents()) {
256 assertNotNull(descriptor.getRealm());
257 assertNotNull(descriptor.getImplementationClass());
258 }
259 }
260
261 public void testBuildExtensionsPluginLoading() throws Exception {
262 RepositoryRequest repositoryRequest = new DefaultRepositoryRequest();
263 repositoryRequest.setLocalRepository(getLocalRepository());
264 repositoryRequest.setRemoteRepositories(getPluginArtifactRepositories());
265
266
267 MavenSession session = createMavenSession(getProject("project-with-build-extensions-plugin"));
268 MavenProject project = session.getCurrentProject();
269 Plugin plugin = project.getPlugin("org.apache.maven.its.plugins:maven-it-plugin");
270
271 PluginDescriptor pluginDescriptor = pluginManager.loadPlugin(
272 plugin, session.getCurrentProject().getRemotePluginRepositories(), session.getRepositorySession());
273 ClassRealm pluginRealm = pluginManager.getPluginRealm(session, pluginDescriptor);
274
275 assertEquals(pluginRealm, pluginDescriptor.getComponents().get(0).getRealm());
276 }
277 }