Repository: maven Updated Branches: refs/heads/master ae9c2269e -> 859651acf
[MNG-6135] Maven plugins and core extensions are not dependencies, they should be resolved the same way as projects. [MNG-4276] Plugins with indirect dependency on plexus-utils are stuck with plexus-utils:1.1 [MNG-4274] Plugins with an undeclared but transitive dependency on plexus-utils via a core artifact get wrong version of p-u o During working on MNG-6135, it turned out that plugin dependency management also is applied to the dependencies declared for a plugin using the 'plugins/plugin/dependencies/dependency' element. Dependencies declared that way must not be overridden by any management. I added management for 'plexus-utils' in the core IT suite. This immediately made the ITs for MNG-4276 and MNG-4274 fail, because 'plexus-utils' got subject to management although a different version has been declared in the plugin declaration. Project: http://git-wip-us.apache.org/repos/asf/maven/repo Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/859651ac Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/859651ac Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/859651ac Branch: refs/heads/master Commit: 859651acfc73af2a2afcd044306eaa0e5e5ac51a Parents: ae9c226 Author: Christian Schulte <schu...@apache.org> Authored: Sat Dec 31 21:27:00 2016 +0100 Committer: Christian Schulte <schu...@apache.org> Committed: Sat Dec 31 21:28:47 2016 +0100 ---------------------------------------------------------------------- .../DefaultPluginDependenciesResolver.java | 42 ++++++++++---------- 1 file changed, 20 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven/blob/859651ac/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java ---------------------------------------------------------------------- diff --git a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java index 874ed05..446fd01 100644 --- a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java +++ b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java @@ -150,21 +150,21 @@ public class DefaultPluginDependenciesResolver private final int depth; - private final DependencyManager defaultManager; + private final DependencyManager delegate; private final List<Artifact> exclusions; - PluginDependencyManager() + PluginDependencyManager( final DependencyManager delegate ) { - this( 0, session.getDependencyManager(), new LinkedList<Artifact>() ); + this( 0, delegate, new LinkedList<Artifact>() ); } - private PluginDependencyManager( final int depth, final DependencyManager defaultManager, + private PluginDependencyManager( final int depth, final DependencyManager delegate, final List<Artifact> exclusions ) { super(); this.depth = depth; - this.defaultManager = defaultManager; + this.delegate = delegate; this.exclusions = exclusions; } @@ -189,8 +189,8 @@ public class DefaultPluginDependenciesResolver } } - return !excluded && this.depth >= 2 && this.defaultManager != null - ? this.defaultManager.manageDependency( dependency ) + return !excluded && this.depth >= 2 && this.delegate != null + ? this.delegate.manageDependency( dependency ) : null; } @@ -199,8 +199,8 @@ public class DefaultPluginDependenciesResolver public DependencyManager deriveChildManager( final DependencyCollectionContext context ) { return new PluginDependencyManager( this.depth + 1, - this.defaultManager != null - ? this.defaultManager.deriveChildManager( context ) + this.delegate != null + ? this.delegate.deriveChildManager( context ) : null, this.exclusions ); @@ -325,13 +325,15 @@ public class DefaultPluginDependenciesResolver final DependencyGraphTransformer pluginDependencyGraphTransformer = ChainedDependencyGraphTransformer.newInstance( session.getDependencyGraphTransformer(), transformer ); - final PluginDependencyManager pluginDependencyManager = new PluginDependencyManager(); + final PluginDependencyManager pluginDependencyManager = + new PluginDependencyManager( classicResolution + ? new ClassicDependencyManager() + : session.getDependencyManager() ); + DefaultRepositorySystemSession pluginSession = new DefaultRepositorySystemSession( session ); pluginSession.setDependencySelector( pluginDependencySelector ); pluginSession.setDependencyGraphTransformer( pluginDependencyGraphTransformer ); - pluginSession.setDependencyManager( classicResolution - ? new ClassicDependencyManager() - : pluginDependencyManager ); + pluginSession.setDependencyManager( pluginDependencyManager ); CollectRequest request = new CollectRequest(); request.setRequestContext( REPOSITORY_CONTEXT ); @@ -340,24 +342,20 @@ public class DefaultPluginDependenciesResolver for ( Dependency dependency : plugin.getDependencies() ) { org.eclipse.aether.graph.Dependency pluginDep = - RepositoryUtils.toDependency( dependency, session.getArtifactTypeRegistry() ); + RepositoryUtils.toDependency( dependency, session.getArtifactTypeRegistry() ); if ( !JavaScopes.SYSTEM.equals( pluginDep.getScope() ) ) { pluginDep = pluginDep.setScope( JavaScopes.RUNTIME ); } request.addDependency( pluginDep ); - if ( !classicResolution ) + if ( logger.isDebugEnabled() ) { - if ( logger.isDebugEnabled() ) - { - logger.debug( String.format( "Collecting plugin dependency %s from project.", pluginDep ) ); - } + logger.debug( String.format( "Collecting plugin dependency %s from project.", pluginDep ) ); + } - pluginDependencyManager.getExclusions(). + pluginDependencyManager.getExclusions(). addAll( this.collectPluginDependencyArtifacts( session, repositories, pluginDep ) ); - - } } request.setRoot( new org.eclipse.aether.graph.Dependency( pluginArtifact, null ) );