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