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