You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2015/05/11 22:08:43 UTC

svn commit: r1678815 - in /maven/shared/branches/m-dependency-tree: ./ src/main/java/org/apache/maven/shared/dependency/graph/ src/main/java/org/apache/maven/shared/dependency/graph/internal/ src/main/java/org/apache/maven/shared/dependency/tree/ src/t...

Author: rfscholte
Date: Mon May 11 20:08:42 2015
New Revision: 1678815

URL: http://svn.apache.org/r1678815
Log:
m-dependency-tree 3.0 cleanup

Removed:
    maven/shared/branches/m-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven2DependencyGraphBuilder.java
    maven/shared/branches/m-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/
    maven/shared/branches/m-dependency-tree/src/test/java/org/
Modified:
    maven/shared/branches/m-dependency-tree/pom.xml
    maven/shared/branches/m-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilder.java
    maven/shared/branches/m-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java
    maven/shared/branches/m-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java
    maven/shared/branches/m-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java

Modified: maven/shared/branches/m-dependency-tree/pom.xml
URL: http://svn.apache.org/viewvc/maven/shared/branches/m-dependency-tree/pom.xml?rev=1678815&r1=1678814&r2=1678815&view=diff
==============================================================================
--- maven/shared/branches/m-dependency-tree/pom.xml (original)
+++ maven/shared/branches/m-dependency-tree/pom.xml Mon May 11 20:08:42 2015
@@ -28,7 +28,7 @@
   </parent>
 
   <artifactId>maven-dependency-tree</artifactId>
-  <version>2.3-SNAPSHOT</version>
+  <version>3.0-SNAPSHOT</version>
 
   <name>Apache Maven Dependency Tree</name>
   <description>A tree-based API for resolution of Maven project dependencies</description>
@@ -50,7 +50,7 @@
   </distributionManagement>
 
   <properties>
-    <mavenVersion>2.2.1</mavenVersion>
+    <mavenVersion>3.0</mavenVersion>
   </properties>
 
   <contributors>
@@ -62,12 +62,6 @@
   <dependencies>
     <dependency>
       <groupId>org.apache.maven</groupId>
-      <artifactId>maven-project</artifactId>
-      <version>${mavenVersion}</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
       <artifactId>maven-core</artifactId>
       <version>3.0.4</version>
       <scope>provided</scope>

Modified: maven/shared/branches/m-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilder.java
URL: http://svn.apache.org/viewvc/maven/shared/branches/m-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilder.java?rev=1678815&r1=1678814&r2=1678815&view=diff
==============================================================================
--- maven/shared/branches/m-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilder.java (original)
+++ maven/shared/branches/m-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilder.java Mon May 11 20:08:42 2015
@@ -21,6 +21,7 @@ package org.apache.maven.shared.dependen
 
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.ProjectBuildingRequest;
 
 import java.util.Collection;
 
@@ -39,10 +40,24 @@ public interface DependencyGraphBuilder
      * @param filter artifact filter (can be <code>null</code>)
      * @return the dependency graph
      * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
+     * @deprecated instead use {@link #buildDependencyGraph(ProjectBuildingRequest, ArtifactFilter)}
      */
+    @Deprecated
     DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter )
         throws DependencyGraphBuilderException;
 
+    
+    /**
+     * Build the dependency graph.
+     *
+     * @param project the project
+     * @param filter artifact filter (can be <code>null</code>)
+     * @return the dependency graph
+     * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
+     */
+    DependencyNode buildDependencyGraph( ProjectBuildingRequest buildingRequest, ArtifactFilter filter )
+                    throws DependencyGraphBuilderException;
+
     /**
      * Build the dependency graph, with a hack to include dependencies contained in the reactor projects
      * but that are not yet compiled, which is the minimum prerequisite for Maven core's
@@ -56,8 +71,28 @@ public interface DependencyGraphBuilder
      * @param reactorProjects Collection of those projects contained in the reactor (can be <code>null</code>).
      * @return the dependency graph
      * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
+     * @deprecated instead use {@link #buildDependencyGraph(ProjectBuildingRequest, ArtifactFilter, Collection)}
      */
+    @Deprecated
     DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter,
                                          Collection<MavenProject> reactorProjects )
         throws DependencyGraphBuilderException;
+    
+    /**
+     * Build the dependency graph, with a hack to include dependencies contained in the reactor projects
+     * but that are not yet compiled, which is the minimum prerequisite for Maven core's
+     * ReactorReader to find them. Notice that this hack hasn't been done for Maven 2.
+     * <p>Notice: If Maven core did collect instead of resolving dependencies (ie did not try to get the
+     * artifacts but only the poms), probably this hack wouldn't be necessary even for people requiring
+     * the dependency graph before compiling. TODO: for Maven 3, use Aether to collect dependencies.</p>
+     *
+     * @param project the project
+     * @param filter artifact filter (can be <code>null</code>)
+     * @param reactorProjects Collection of those projects contained in the reactor (can be <code>null</code>).
+     * @return the dependency graph
+     * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
+     */
+    DependencyNode buildDependencyGraph( ProjectBuildingRequest buildingRequest, ArtifactFilter filter,
+                                         Collection<MavenProject> reactorProjects )
+        throws DependencyGraphBuilderException;
 }

Modified: maven/shared/branches/m-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java
URL: http://svn.apache.org/viewvc/maven/shared/branches/m-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java?rev=1678815&r1=1678814&r2=1678815&view=diff
==============================================================================
--- maven/shared/branches/m-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java (original)
+++ maven/shared/branches/m-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java Mon May 11 20:08:42 2015
@@ -21,6 +21,7 @@ package org.apache.maven.shared.dependen
 
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.ProjectBuildingRequest;
 import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
 import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
 import org.apache.maven.shared.dependency.graph.DependencyNode;
@@ -62,7 +63,13 @@ public class DefaultDependencyGraphBuild
     public DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter )
         throws DependencyGraphBuilderException
     {
-        return buildDependencyGraph( project, filter, null );
+        return buildDependencyGraph( project.getProjectBuildingRequest(), filter, null );
+    }
+    
+    public DependencyNode buildDependencyGraph( ProjectBuildingRequest buildingRequest, ArtifactFilter filter )
+        throws DependencyGraphBuilderException
+    {
+        return buildDependencyGraph( buildingRequest, filter, null );
     }
 
     /**
@@ -78,16 +85,24 @@ public class DefaultDependencyGraphBuild
                                                 Collection<MavenProject> reactorProjects )
         throws DependencyGraphBuilderException
     {
+        return buildDependencyGraph( project.getProjectBuildingRequest(), filter, reactorProjects );
+    }
+    
+    public DependencyNode buildDependencyGraph( ProjectBuildingRequest buildingRequest, ArtifactFilter filter,
+                                                Collection<MavenProject> reactorProjects )
+        throws DependencyGraphBuilderException
+    {
         try
         {
-            String hint = isMaven31() ? "maven31" : isMaven2x() ? "maven2" : "maven3";
+            String hint = isMaven31() ? "maven31" : "maven3";
 
             DependencyGraphBuilder effectiveGraphBuilder =
                 (DependencyGraphBuilder) container.lookup( DependencyGraphBuilder.class.getCanonicalName(), hint );
-            getLogger().debug( "building " + hint + " dependency graph for " + project.getId() + " with "
-                                   + effectiveGraphBuilder.getClass().getSimpleName() );
+            
+            getLogger().debug( "building " + hint + " dependency graph for " + buildingRequest.getProject().getId()
+                                   + " with " + effectiveGraphBuilder.getClass().getSimpleName() );
 
-            return effectiveGraphBuilder.buildDependencyGraph( project, filter, reactorProjects );
+            return effectiveGraphBuilder.buildDependencyGraph( buildingRequest, filter, reactorProjects );
         }
         catch ( ComponentLookupException e )
         {
@@ -96,14 +111,6 @@ public class DefaultDependencyGraphBuild
     }
 
     /**
-     * @return true if the current Maven is Maven 2.x.
-     */
-    protected static boolean isMaven2x()
-    {
-        return !canFindCoreClass( "org.apache.maven.project.DependencyResolutionRequest" ); // Maven 3 specific
-    }
-
-    /**
      * @return true if the current Maven version is Maven 3.1.
      */
     protected static boolean isMaven31()

Modified: maven/shared/branches/m-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java
URL: http://svn.apache.org/viewvc/maven/shared/branches/m-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java?rev=1678815&r1=1678814&r2=1678815&view=diff
==============================================================================
--- maven/shared/branches/m-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java (original)
+++ maven/shared/branches/m-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java Mon May 11 20:08:42 2015
@@ -78,6 +78,12 @@ public class Maven31DependencyGraphBuild
     {
         return buildDependencyGraph( project, filter, null );
     }
+    
+    public DependencyNode buildDependencyGraph( ProjectBuildingRequest buildingRequest, ArtifactFilter filter )
+        throws DependencyGraphBuilderException
+    {
+        return buildDependencyGraph( buildingRequest, filter, null );
+    }
 
     /**
      * Builds the dependency graph for Maven 3.1+, eventually hacking for collecting projects from
@@ -96,6 +102,15 @@ public class Maven31DependencyGraphBuild
         ProjectBuildingRequest projectBuildingRequest =
             (ProjectBuildingRequest) Invoker.invoke( project, "getProjectBuildingRequest" );
 
+        return buildDependencyGraph( projectBuildingRequest, filter, reactorProjects );
+    }
+    
+    public DependencyNode buildDependencyGraph( ProjectBuildingRequest projectBuildingRequest, ArtifactFilter filter,
+                                                Collection<MavenProject> reactorProjects )
+        throws DependencyGraphBuilderException
+    {
+        MavenProject project = projectBuildingRequest.getProject();
+        
         RepositorySystemSession session =
             (RepositorySystemSession) Invoker.invoke( projectBuildingRequest, "getRepositorySession" );
 

Modified: maven/shared/branches/m-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java
URL: http://svn.apache.org/viewvc/maven/shared/branches/m-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java?rev=1678815&r1=1678814&r2=1678815&view=diff
==============================================================================
--- maven/shared/branches/m-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java (original)
+++ maven/shared/branches/m-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java Mon May 11 20:08:42 2015
@@ -19,6 +19,13 @@ package org.apache.maven.shared.dependen
  * under the License.
  */
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
@@ -36,16 +43,10 @@ import org.apache.maven.shared.dependenc
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.sonatype.aether.RepositorySystemSession;
 import org.sonatype.aether.graph.Dependency;
 import org.sonatype.aether.version.VersionConstraint;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
 /**
  * Wrapper around Maven 3 dependency resolver.
  *
@@ -77,6 +78,12 @@ public class Maven3DependencyGraphBuilde
     {
         return buildDependencyGraph( project, filter, null );
     }
+    
+    public DependencyNode buildDependencyGraph( ProjectBuildingRequest buildingRequest, ArtifactFilter filter )
+        throws DependencyGraphBuilderException
+    {
+        return buildDependencyGraph( buildingRequest, filter, null );
+    }
 
     /**
      * Builds the dependency graph for Maven 3, eventually hacking for collecting projects from
@@ -92,17 +99,31 @@ public class Maven3DependencyGraphBuilde
                                                 Collection<MavenProject> reactorProjects )
         throws DependencyGraphBuilderException
     {
+        // this method doesn't exist on all MavenProject versions and also has been deprecated.
         ProjectBuildingRequest projectBuildingRequest =
             (ProjectBuildingRequest) Invoker.invoke( project, "getProjectBuildingRequest" );
 
+        return buildDependencyGraph( projectBuildingRequest, filter, reactorProjects );
+    }
+
+    public DependencyNode buildDependencyGraph( ProjectBuildingRequest buildingRequest, ArtifactFilter filter,
+                                                Collection<MavenProject> reactorProjects )
+        throws DependencyGraphBuilderException
+    {
+        MavenProject project = buildingRequest.getProject();
+        
+        RepositorySystemSession session =
+            (RepositorySystemSession) Invoker.invoke( buildingRequest, "getRepositorySession" );
+        
         DependencyResolutionRequest request =
-            new DefaultDependencyResolutionRequest( project, projectBuildingRequest.getRepositorySession() );
+            new DefaultDependencyResolutionRequest( project, session );
 
         DependencyResolutionResult result = resolveDependencies( request, reactorProjects );
 
         return buildDependencyNode( null, result.getDependencyGraph(), project.getArtifact(), filter );
     }
 
+    
     private DependencyResolutionResult resolveDependencies( DependencyResolutionRequest request,
                                                             Collection<MavenProject> reactorProjects )
         throws DependencyGraphBuilderException