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