You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sc...@apache.org on 2016/12/18 05:19:23 UTC

maven git commit: [MNG-6135] Maven plugins and core extensions are not dependencies, they should be resolved the same way as projects. [MNG-5761] Dependency management is not transitive.

Repository: maven
Updated Branches:
  refs/heads/master bbffde98f -> 06580630a


[MNG-6135] Maven plugins and core extensions are not dependencies, they should be resolved the same way as projects.
[MNG-5761] Dependency management is not transitive.

o Updated to make any dependencies added to a plugin in a consuming POM
  using the 'plugin/dependencies/dependency' element override not only the
  dependencies resolved for the plugin but also any dependency management
  applied.


Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/06580630
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/06580630
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/06580630

Branch: refs/heads/master
Commit: 06580630a3b09143770fd8eeda6c86f70a016f4d
Parents: bbffde9
Author: Christian Schulte <sc...@apache.org>
Authored: Sun Dec 18 06:12:57 2016 +0100
Committer: Christian Schulte <sc...@apache.org>
Committed: Sun Dec 18 06:18:33 2016 +0100

----------------------------------------------------------------------
 .../DefaultPluginDependenciesResolver.java      | 34 +++++++++++++++++++-
 1 file changed, 33 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven/blob/06580630/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 25d582d..b46c35d 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
@@ -61,6 +61,7 @@ import org.eclipse.aether.util.graph.manager.DependencyManagerUtils;
 import org.eclipse.aether.util.graph.selector.AndDependencySelector;
 import org.eclipse.aether.util.graph.selector.ExclusionDependencySelector;
 import org.eclipse.aether.util.graph.transformer.ChainedDependencyGraphTransformer;
+import org.eclipse.aether.util.graph.visitor.PreorderNodeListGenerator;
 import org.eclipse.aether.util.repository.SimpleArtifactDescriptorPolicy;
 
 /**
@@ -307,7 +308,15 @@ public class DefaultPluginDependenciesResolver
                     pluginDep = pluginDep.setScope( JavaScopes.RUNTIME );
                 }
                 request.addDependency( pluginDep );
-                pluginDependencyManager.getExclusions().add( pluginDep.getArtifact() );
+
+                if ( logger.isDebugEnabled() )
+                {
+                    logger.debug( String.format( "Collecting plugin dependency %s from project.", pluginDep ) );
+                }
+
+                pluginDependencyManager.getExclusions().
+                    addAll( this.collectPluginDependencyArtifacts( session, repositories, pluginDep ) );
+
             }
 
             // [MNG-6135] Maven plugins and core extensions are not dependencies, they should be resolved the same way
@@ -343,6 +352,29 @@ public class DefaultPluginDependenciesResolver
         }
     }
 
+    private List<org.eclipse.aether.artifact.Artifact> collectPluginDependencyArtifacts(
+        final RepositorySystemSession session, final List<RemoteRepository> repositories,
+        final org.eclipse.aether.graph.Dependency pluginDependency )
+        throws DependencyCollectionException
+    {
+        final CollectRequest request = new CollectRequest();
+        request.setRequestContext( REPOSITORY_CONTEXT );
+        request.setRepositories( repositories );
+        request.setRoot( pluginDependency );
+        request.setTrace( RequestTrace.newChild( null, pluginDependency ) );
+
+        final DependencyNode node = repoSystem.collectDependencies( session, request ).getRoot();
+
+        if ( logger.isDebugEnabled() )
+        {
+            node.accept( new GraphLogger() );
+        }
+
+        final PreorderNodeListGenerator nlg = new PreorderNodeListGenerator();
+        node.accept( nlg );
+        return nlg.getArtifacts( true );
+    }
+
     // Keep this class in sync with org.apache.maven.project.DefaultProjectDependenciesResolver.GraphLogger
     class GraphLogger
         implements DependencyVisitor