1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.lifecycle.internal;
20
21 import java.util.HashMap;
22 import java.util.Map;
23
24 import org.apache.maven.execution.MavenSession;
25 import org.apache.maven.model.Plugin;
26 import org.apache.maven.model.PluginManagement;
27 import org.apache.maven.plugin.version.DefaultPluginVersionRequest;
28 import org.apache.maven.plugin.version.PluginVersionRequest;
29 import org.apache.maven.plugin.version.PluginVersionResolutionException;
30 import org.apache.maven.plugin.version.PluginVersionResolver;
31 import org.apache.maven.project.MavenProject;
32 import org.codehaus.plexus.component.annotations.Component;
33 import org.codehaus.plexus.component.annotations.Requirement;
34
35
36
37
38
39
40
41 @Component(role = LifecyclePluginResolver.class)
42 public class LifecyclePluginResolver {
43 @Requirement
44 private PluginVersionResolver pluginVersionResolver;
45
46 public LifecyclePluginResolver(PluginVersionResolver pluginVersionResolver) {
47 this.pluginVersionResolver = pluginVersionResolver;
48 }
49
50 public LifecyclePluginResolver() {}
51
52 public void resolveMissingPluginVersions(MavenProject project, MavenSession session)
53 throws PluginVersionResolutionException {
54 Map<String, String> versions = new HashMap<>(64);
55
56 for (Plugin plugin : project.getBuildPlugins()) {
57 if (plugin.getVersion() == null) {
58 PluginVersionRequest request = new DefaultPluginVersionRequest(
59 plugin, session.getRepositorySession(), project.getRemotePluginRepositories());
60 plugin.setVersion(pluginVersionResolver.resolve(request).getVersion());
61 }
62 versions.put(plugin.getKey(), plugin.getVersion());
63 }
64
65 PluginManagement pluginManagement = project.getPluginManagement();
66 if (pluginManagement != null) {
67 for (Plugin plugin : pluginManagement.getPlugins()) {
68 if (plugin.getVersion() == null) {
69 plugin.setVersion(versions.get(plugin.getKey()));
70 if (plugin.getVersion() == null) {
71 PluginVersionRequest request = new DefaultPluginVersionRequest(
72 plugin, session.getRepositorySession(), project.getRemotePluginRepositories());
73 plugin.setVersion(pluginVersionResolver.resolve(request).getVersion());
74 }
75 }
76 }
77 }
78 }
79 }