You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2014/05/19 14:38:46 UTC
svn commit: r1595871 - in /maven/shared/trunk/maven-dependency-tree: ./
src/it/multi-module-plugin/src/main/java/org/apache/maven/its/deptree/
src/main/java/org/apache/maven/shared/dependency/graph/
src/main/java/org/apache/maven/shared/dependency/grap...
Author: jvanzyl
Date: Mon May 19 12:38:45 2014
New Revision: 1595871
URL: http://svn.apache.org/r1595871
Log:
MSHARED-336: Create a method in the DependencyGraphBuilder that accepts the reactor projects and resolves dependencies from within the reactor
Changes from code review: https://github.com/apache/maven-shared/pull/6 with commit squashed
Submitted by: William Ferguson <wi...@xandar.com.au>
Added:
maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/ArtifactKey.java
Removed:
maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/ProjectReferenceKeyGenerator.java
Modified:
maven/shared/trunk/maven-dependency-tree/pom.xml
maven/shared/trunk/maven-dependency-tree/src/it/multi-module-plugin/src/main/java/org/apache/maven/its/deptree/ResolveDependenciesLifecycleParticipant.java
maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilder.java
maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilderException.java
maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyNode.java
maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java
maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java
maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven2DependencyGraphBuilder.java
maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java
maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java
maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DefaultDependencyTreeBuilder.java
maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java
maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeBuilder.java
maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeResolutionListener.java
Modified: maven/shared/trunk/maven-dependency-tree/pom.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/pom.xml?rev=1595871&r1=1595870&r2=1595871&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/pom.xml (original)
+++ maven/shared/trunk/maven-dependency-tree/pom.xml Mon May 19 12:38:45 2014
@@ -150,11 +150,7 @@
<goal>install</goal> <!-- So that the multi-module-plugin is installed into the integration-test repo -->
</goals>
<pomIncludes>
- <!--pomInclude>*/pom.xml</pomInclude-->
- <pomInclude>maven-version/pom.xml</pomInclude>
- <pomInclude>mshared-167/pom.xml</pomInclude>
- <pomInclude>multi-module-plugin/pom.xml</pomInclude>
- <pomInclude>multi-module-test/pom.xml</pomInclude>
+ <pomInclude>*/pom.xml</pomInclude>
</pomIncludes>
</configuration>
<executions>
@@ -171,23 +167,6 @@
<plugin>
<groupId>org.apache.rat</groupId>
<artifactId>apache-rat-plugin</artifactId>
- <version>0.10</version>
- <configuration>
- <excludes>
- <!--
- These files contains the expected output of this component and can not contain a license header.
- -->
- <exclude>src/it/maven-version/expected.txt</exclude>
- <exclude>src/it/mshared-167/expected-M2.txt</exclude>
- <exclude>src/it/mshared-167/expected-M3.txt</exclude>
- <exclude>src/it/verbose/expected-default.txt</exclude>
- <exclude>src/it/verbose/expected-verbose.txt</exclude>
- </excludes>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.rat</groupId>
- <artifactId>apache-rat-plugin</artifactId>
<configuration>
<excludes>
<exclude>src/test/resources*/**</exclude>
Modified: maven/shared/trunk/maven-dependency-tree/src/it/multi-module-plugin/src/main/java/org/apache/maven/its/deptree/ResolveDependenciesLifecycleParticipant.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/it/multi-module-plugin/src/main/java/org/apache/maven/its/deptree/ResolveDependenciesLifecycleParticipant.java?rev=1595871&r1=1595870&r2=1595871&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/it/multi-module-plugin/src/main/java/org/apache/maven/its/deptree/ResolveDependenciesLifecycleParticipant.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/it/multi-module-plugin/src/main/java/org/apache/maven/its/deptree/ResolveDependenciesLifecycleParticipant.java Mon May 19 12:38:45 2014
@@ -25,14 +25,11 @@ import org.apache.maven.execution.MavenS
import org.apache.maven.project.MavenProject;
import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
-import org.apache.maven.shared.dependency.graph.ProjectReferenceKeyGenerator;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.logging.Logger;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
/**
* Resolves all the dependencies in the project immediately after the Project has been read.
@@ -64,18 +61,6 @@ public final class ResolveDependenciesLi
final List<MavenProject> projects = session.getProjects();
- // NB We could get this from session.getProjectMap() but it doesn't exist in Maven-2.2.1 or 3.0.4
- final Map<String, MavenProject> reactorProjects = new HashMap<String, MavenProject>();
- final ProjectReferenceKeyGenerator keyGenerator = new ProjectReferenceKeyGenerator();
-
- log.debug( "Reactor projects:" );
- for ( MavenProject project : projects )
- {
- log.debug( " - " + project );
- reactorProjects.put( keyGenerator.getProjectReferenceKey( project ), project );
- }
- log.debug( "" );
-
for ( MavenProject project : projects )
{
log.debug( "" );
@@ -84,7 +69,7 @@ public final class ResolveDependenciesLi
try
{
// No need to filter our search. We want to resolve all artifacts.
- dependencyGraphBuilder.buildDependencyGraph( project, null, reactorProjects );
+ dependencyGraphBuilder.buildDependencyGraph( project, null, projects );
}
catch ( DependencyGraphBuilderException e )
{
Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilder.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilder.java?rev=1595871&r1=1595870&r2=1595871&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilder.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilder.java Mon May 19 12:38:45 2014
@@ -22,7 +22,7 @@ package org.apache.maven.shared.dependen
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.project.MavenProject;
-import java.util.Map;
+import java.util.Collection;
/**
* Maven project dependency graph builder API, neutral against Maven 2 or Maven 3.
@@ -34,13 +34,14 @@ public interface DependencyGraphBuilder
{
/**
* Build the dependency graph from the repository. This is the same as
- * {@link #buildDependencyGraph(org.apache.maven.project.MavenProject, org.apache.maven.artifact.resolver.filter.ArtifactFilter, java.util.Map)}
+ * {@link #buildDependencyGraph(org.apache.maven.project.MavenProject,
+ * org.apache.maven.artifact.resolver.filter.ArtifactFilter, java.util.Collection)}
* with an empty reactorProjects Map.
*
* @param project the project
* @param filter artifact filter (can be <code>null</code>)
* @return the dependency graph
- * @throws DependencyGraphBuilderException
+ * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
*/
DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter )
throws DependencyGraphBuilderException;
@@ -50,12 +51,11 @@ public interface DependencyGraphBuilder
*
* @param project the project
* @param filter artifact filter (can be <code>null</code>)
- * @param reactorProjects Map of those projects contained in the reactor. Key is made up of
- * groupId-artifactId-version.
+ * @param reactorProjects Collection of those projects contained in the reactor.
* @return the dependency graph
- * @throws DependencyGraphBuilderException
+ * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
*/
DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter,
- Map<String, MavenProject> reactorProjects )
+ Collection<MavenProject> reactorProjects )
throws DependencyGraphBuilderException;
}
Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilderException.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilderException.java?rev=1595871&r1=1595870&r2=1595871&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilderException.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyGraphBuilderException.java Mon May 19 12:38:45 2014
@@ -32,11 +32,18 @@ public class DependencyGraphBuilderExcep
// constructors -----------------------------------------------------------
+ /**
+ * @param message Message indicating why dependency graph could not be resolved.
+ */
public DependencyGraphBuilderException( String message )
{
super( message );
}
+ /**
+ * @param message Message indicating why dependency graph could not be resolved.
+ * @param cause Throwable indicating at which point the graph failed to be resolved.
+ */
public DependencyGraphBuilderException( String message, Throwable cause )
{
super( message, cause );
Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyNode.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyNode.java?rev=1595871&r1=1595870&r2=1595871&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyNode.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/DependencyNode.java Mon May 19 12:38:45 2014
@@ -33,8 +33,14 @@ import org.apache.maven.shared.dependenc
*/
public interface DependencyNode
{
+ /**
+ * @return Artifact for this DependencyNode.
+ */
Artifact getArtifact();
+ /**
+ * @return children of this DependencyNode.
+ */
List<DependencyNode> getChildren();
/**
Added: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/ArtifactKey.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/ArtifactKey.java?rev=1595871&view=auto
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/ArtifactKey.java (added)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/ArtifactKey.java Mon May 19 12:38:45 2014
@@ -0,0 +1,85 @@
+package org.apache.maven.shared.dependency.graph.internal;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.project.MavenProject;
+
+/**
+ * Uniquely defines an artifact by groupId, artifactId and version.
+ */
+final class ArtifactKey
+{
+ private static final int HASH_PRIME = 31;
+
+ private final String groupId;
+ private final String artifactId;
+ private final String version;
+
+ ArtifactKey( String groupId, String artifactId, String version )
+ {
+ this.groupId = groupId;
+ this.artifactId = artifactId;
+ this.version = version;
+ }
+
+ public ArtifactKey( MavenProject project )
+ {
+ this ( project.getGroupId(), project.getArtifactId(), project.getVersion() );
+ }
+
+ @Override
+ public boolean equals( Object o )
+ {
+ if ( this == o )
+ {
+ return true;
+ }
+ if ( !( o instanceof ArtifactKey ) )
+ {
+ return false;
+ }
+
+ ArtifactKey that = ( ArtifactKey ) o;
+
+ if ( !artifactId.equals( that.artifactId ) )
+ {
+ return false;
+ }
+ if ( !groupId.equals( that.groupId ) )
+ {
+ return false;
+ }
+ if ( !version.equals( that.version ) )
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ int result = groupId.hashCode();
+ result = HASH_PRIME * result + artifactId.hashCode();
+ result = HASH_PRIME * result + version.hashCode();
+ return result;
+ }
+}
Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java?rev=1595871&r1=1595870&r2=1595871&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyGraphBuilder.java Mon May 19 12:38:45 2014
@@ -33,8 +33,8 @@ import org.codehaus.plexus.context.Conte
import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
+import java.util.Collection;
import java.util.Collections;
-import java.util.Map;
/**
* Default dependency graph builder that detects current Maven version to delegate to either Maven 2 or Maven 3 specific
@@ -52,14 +52,31 @@ public class DefaultDependencyGraphBuild
{
protected PlexusContainer container;
+ /**
+ * Builds a dependency graph.
+ *
+ * @param project the project
+ * @param filter artifact filter (can be <code>null</code>)
+ * @return DependencyNode containing the dependency graph.
+ * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
+ */
public DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter )
throws DependencyGraphBuilderException
{
- return buildDependencyGraph( project, filter, Collections.EMPTY_MAP );
+ return buildDependencyGraph( project, filter, Collections.EMPTY_LIST );
}
+ /**
+ * Builds a dependency graph.
+ *
+ * @param project the project
+ * @param filter artifact filter (can be <code>null</code>)
+ * @param reactorProjects Collection of those projects contained in the reactor.
+ * @return DependencyNode containing the dependency graph.
+ * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
+ */
public DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter,
- Map<String, MavenProject> reactorProjects )
+ Collection<MavenProject> reactorProjects )
throws DependencyGraphBuilderException
{
try
@@ -80,7 +97,7 @@ public class DefaultDependencyGraphBuild
}
/**
- * Check the current Maven version to see if it's Maven 2.x.
+ * @return true if the current Maven is Maven 2.x.
*/
protected static boolean isMaven2x()
{
@@ -88,7 +105,7 @@ public class DefaultDependencyGraphBuild
}
/**
- * Check the current Maven version to see if it's Maven 3.1.
+ * @return true if the current Maven version is Maven 3.1.
*/
protected static boolean isMaven31()
{
@@ -109,6 +126,12 @@ public class DefaultDependencyGraphBuild
}
}
+ /**
+ * Injects the Plexus content.
+ *
+ * @param context Plexus context to inject.
+ * @throws ContextException if the PlexusContainer could not be located.
+ */
public void contextualize( Context context )
throws ContextException
{
Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java?rev=1595871&r1=1595870&r2=1595871&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/DefaultDependencyNode.java Mon May 19 12:38:45 2014
@@ -25,8 +25,10 @@ import org.apache.maven.artifact.Artifac
import org.apache.maven.shared.dependency.graph.DependencyNode;
import org.apache.maven.shared.dependency.graph.traversal.DependencyNodeVisitor;
-public class DefaultDependencyNode
- implements DependencyNode
+/**
+ * Default implementation of a DependencyNode.
+ */
+public class DefaultDependencyNode implements DependencyNode
{
private final Artifact artifact;
@@ -40,6 +42,15 @@ public class DefaultDependencyNode
private List<DependencyNode> children;
+ /**
+ * Constructs the DefaultDependencyNode.
+ *
+ * @param parent Parent node.
+ * @param artifact Artifact associated with this dependency.
+ * @param premanagedVersion
+ * @param premanagedScope
+ * @param versionConstraint
+ */
public DefaultDependencyNode( DependencyNode parent, Artifact artifact, String premanagedVersion,
String premanagedScope, String versionConstraint )
{
@@ -73,21 +84,34 @@ public class DefaultDependencyNode
return visitor.endVisit( this );
}
+ /**
+ * @return Artifact for this DependencyNode.
+ */
public Artifact getArtifact()
{
return artifact;
}
+ /**
+ *
+ * @param children List of DependencyNode to set as child nodes.
+ */
public void setChildren( List<DependencyNode> children )
{
this.children = children;
}
+ /**
+ * @return List of child nodes for this DependencyNode.
+ */
public List<DependencyNode> getChildren()
{
return children;
}
+ /**
+ * @return Parent of this DependencyNode.
+ */
public DependencyNode getParent()
{
return parent;
@@ -108,6 +132,9 @@ public class DefaultDependencyNode
return versionConstraint;
}
+ /**
+ * @return Stringified representation of this DependencyNode.
+ */
public String toNodeString()
{
StringBuffer buffer = new StringBuffer();
Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven2DependencyGraphBuilder.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven2DependencyGraphBuilder.java?rev=1595871&r1=1595870&r2=1595871&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven2DependencyGraphBuilder.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven2DependencyGraphBuilder.java Mon May 19 12:38:45 2014
@@ -19,11 +19,6 @@ package org.apache.maven.shared.dependen
* under the License.
*/
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.project.MavenProject;
import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
@@ -35,6 +30,11 @@ import org.codehaus.plexus.component.ann
import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.logging.AbstractLogEnabled;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
/**
* Wrapper around Maven 2 dependency tree builder.
*
@@ -50,6 +50,14 @@ public class Maven2DependencyGraphBuilde
@Requirement
private DependencyTreeBuilder treeBuilder;
+ /**
+ * Builds the dependency graph for Maven 2.
+ *
+ * @param project the project
+ * @param filter artifact filter (can be <code>null</code>)
+ * @return DependencyNode containing the dependency graph.
+ * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
+ */
public DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter )
throws DependencyGraphBuilderException
{
@@ -63,8 +71,19 @@ public class Maven2DependencyGraphBuilde
}
}
+ /**
+ * Builds the dependency graph for Maven 2.
+ *
+ * NB the reactor projects are ignored as Maven 2 is not able to resolve projects from the reactor.
+ *
+ * @param project the project
+ * @param filter artifact filter (can be <code>null</code>)
+ * @param reactorProjects Ignored.
+ * @return DependencyNode containing the dependency graph.
+ * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
+ */
public DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter,
- Map<String, MavenProject> reactorProjects )
+ Collection<MavenProject> reactorProjects )
throws DependencyGraphBuilderException
{
getLogger().warn( "Reactor projects ignored - reactor dependencies cannot be resolved in Maven2" );
Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java?rev=1595871&r1=1595870&r2=1595871&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven31DependencyGraphBuilder.java Mon May 19 12:38:45 2014
@@ -33,7 +33,6 @@ import org.apache.maven.project.ProjectD
import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
import org.apache.maven.shared.dependency.graph.DependencyNode;
-import org.apache.maven.shared.dependency.graph.ProjectReferenceKeyGenerator;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.logging.AbstractLogEnabled;
@@ -44,6 +43,7 @@ import org.eclipse.aether.version.Versio
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -67,16 +67,31 @@ public class Maven31DependencyGraphBuild
private final Invoker invoker = new Invoker();
- private final ProjectReferenceKeyGenerator keyGenerator = new ProjectReferenceKeyGenerator();
-
+ /**
+ * Builds the dependency graph for Maven 3 point 1+.
+ *
+ * @param project the project
+ * @param filter artifact filter (can be <code>null</code>)
+ * @return DependencyNode containing the dependency graph.
+ * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
+ */
public DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter )
throws DependencyGraphBuilderException
{
- return buildDependencyGraph( project, filter, Collections.EMPTY_MAP );
+ return buildDependencyGraph( project, filter, Collections.EMPTY_LIST );
}
+ /**
+ * Builds the dependency graph for Maven 3 point 1+ including any dependencies from any projects in the reactor.
+ *
+ * @param project the project
+ * @param filter artifact filter (can be <code>null</code>)
+ * @param reactorProjects Collection of those projects contained in the reactor.
+ * @return DependencyNode containing the dependency graph.
+ * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
+ */
public DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter,
- Map<String, MavenProject> reactorProjects )
+ Collection<MavenProject> reactorProjects )
throws DependencyGraphBuilderException
{
ProjectBuildingRequest projectBuildingRequest =
@@ -106,7 +121,7 @@ public class Maven31DependencyGraphBuild
}
private DependencyResolutionResult resolveDependencies( DependencyResolutionRequest request,
- Map<String, MavenProject> reactorProjects )
+ Collection<MavenProject> reactorProjects )
throws DependencyGraphBuilderException
{
try
@@ -142,17 +157,24 @@ public class Maven31DependencyGraphBuild
}
}
- private List<Dependency> getReactorDependencies( Map<String, MavenProject> reactorProjects, List<?> dependencies )
+ private List<Dependency> getReactorDependencies( Collection<MavenProject> reactorProjects, List<?> dependencies )
{
+ // Create ProjectMap
+ final Map<ArtifactKey, MavenProject> projectMap = new HashMap<ArtifactKey, MavenProject>();
+ for ( final MavenProject project : reactorProjects )
+ {
+ projectMap.put( new ArtifactKey( project ), project );
+ }
+
final List<Dependency> reactorDeps = new ArrayList<Dependency>();
for ( final Object untypedDependency : dependencies )
{
final Dependency dependency = (Dependency) untypedDependency;
final org.eclipse.aether.artifact.Artifact depArtifact = dependency.getArtifact();
- final String projectRefId =
- keyGenerator.getProjectReferenceKey( depArtifact.getGroupId(), depArtifact.getArtifactId(),
- depArtifact.getVersion() );
- if ( reactorProjects.containsKey( projectRefId ) )
+ final ArtifactKey key = new ArtifactKey(
+ depArtifact.getGroupId(), depArtifact.getArtifactId(), depArtifact.getVersion()
+ );
+ if ( projectMap.containsKey( key ) )
{
reactorDeps.add( dependency );
}
Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java?rev=1595871&r1=1595870&r2=1595871&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/graph/internal/Maven3DependencyGraphBuilder.java Mon May 19 12:38:45 2014
@@ -19,13 +19,6 @@ package org.apache.maven.shared.dependen
* under the License.
*/
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
@@ -40,13 +33,20 @@ import org.apache.maven.project.ProjectD
import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
import org.apache.maven.shared.dependency.graph.DependencyNode;
-import org.apache.maven.shared.dependency.graph.ProjectReferenceKeyGenerator;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.sonatype.aether.graph.Dependency;
import org.sonatype.aether.version.VersionConstraint;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
/**
* Wrapper around Maven 3 dependency resolver.
*
@@ -67,16 +67,31 @@ public class Maven3DependencyGraphBuilde
private final Invoker invoker = new Invoker();
- private final ProjectReferenceKeyGenerator keyGenerator = new ProjectReferenceKeyGenerator();
-
+ /**
+ * Builds the dependency graph for Maven 3.
+ *
+ * @param project the project
+ * @param filter artifact filter (can be <code>null</code>)
+ * @return DependencyNode containing the dependency graph.
+ * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
+ */
public DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter )
throws DependencyGraphBuilderException
{
- return buildDependencyGraph( project, filter, Collections.EMPTY_MAP );
+ return buildDependencyGraph( project, filter, Collections.EMPTY_LIST );
}
+ /**
+ * Builds the dependency graph for Maven 3 including any dependencies from any projects in the reactor.
+ *
+ * @param project the project
+ * @param filter artifact filter (can be <code>null</code>)
+ * @param reactorProjects Collection of those projects contained in the reactor.
+ * @return DependencyNode containing the dependency graph.
+ * @throws DependencyGraphBuilderException if some of the dependencies could not be resolved.
+ */
public DependencyNode buildDependencyGraph( MavenProject project, ArtifactFilter filter,
- Map<String, MavenProject> reactorProjects )
+ Collection<MavenProject> reactorProjects )
throws DependencyGraphBuilderException
{
ProjectBuildingRequest projectBuildingRequest =
@@ -91,7 +106,7 @@ public class Maven3DependencyGraphBuilde
}
private DependencyResolutionResult resolveDependencies( DependencyResolutionRequest request,
- Map<String, MavenProject> reactorProjects )
+ Collection<MavenProject> reactorProjects )
throws DependencyGraphBuilderException
{
try
@@ -127,9 +142,16 @@ public class Maven3DependencyGraphBuilde
}
}
- private List<org.sonatype.aether.graph.Dependency> getReactorDependencies( Map<String, MavenProject> reactorProjects,
+ private List<org.sonatype.aether.graph.Dependency> getReactorDependencies( Collection<MavenProject> reactorProjects,
List<?> dependencies )
{
+ // Create ProjectMap
+ final Map<ArtifactKey, MavenProject> projectMap = new HashMap<ArtifactKey, MavenProject>();
+ for ( final MavenProject project : reactorProjects )
+ {
+ projectMap.put( new ArtifactKey( project ), project );
+ }
+
final List<org.sonatype.aether.graph.Dependency> reactorDeps =
new ArrayList<org.sonatype.aether.graph.Dependency>();
for ( final Object untypedDependency : dependencies )
@@ -137,10 +159,10 @@ public class Maven3DependencyGraphBuilde
final org.sonatype.aether.graph.Dependency dependency =
(org.sonatype.aether.graph.Dependency) untypedDependency;
final org.sonatype.aether.artifact.Artifact depArtifact = dependency.getArtifact();
- final String projectRefId =
- keyGenerator.getProjectReferenceKey( depArtifact.getGroupId(), depArtifact.getArtifactId(),
- depArtifact.getVersion() );
- if ( reactorProjects.containsKey( projectRefId ) )
+ final ArtifactKey key = new ArtifactKey(
+ depArtifact.getGroupId(), depArtifact.getArtifactId(), depArtifact.getVersion()
+ );
+ if ( projectMap.containsKey( key ) )
{
reactorDeps.add( dependency );
}
@@ -183,11 +205,9 @@ public class Maven3DependencyGraphBuilde
Artifact artifact, ArtifactFilter filter )
{
DefaultDependencyNode current =
- new DefaultDependencyNode( parent, artifact, null /* node.getPremanagedVersion() */, null /*
- * node.
- * getPremanagedScope
- * ()
- */,
+ new DefaultDependencyNode( parent, artifact,
+ null /* node.getPremanagedVersion() */,
+ null /* node.getPremanagedScope() */,
getVersionSelectedFromRange( node.getVersionConstraint() ) );
List<DependencyNode> nodes = new ArrayList<DependencyNode>( node.getChildren().size() );
Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DefaultDependencyTreeBuilder.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DefaultDependencyTreeBuilder.java?rev=1595871&r1=1595870&r2=1595871&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DefaultDependencyTreeBuilder.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DefaultDependencyTreeBuilder.java Mon May 19 12:38:45 2014
@@ -133,6 +133,13 @@ public class DefaultDependencyTreeBuilde
}
}
+ /**
+ * Builds a dependency tree.
+ *
+ * @param project MavenProject for which ot build the dependency tree.
+ * @return DependencyNode containing the dependency tree for the project.
+ * @throws DependencyTreeBuilderException if the dependency tree could not be built.
+ */
public DependencyNode buildDependencyTree( MavenProject project )
throws DependencyTreeBuilderException
{
@@ -140,6 +147,15 @@ public class DefaultDependencyTreeBuilde
metadataSource, null, collector );
}
+ /**
+ * Builds a dependency tree.
+ *
+ * @param project MavenProject for which ot build the dependency tree.
+ * @param repository ArtifactRepository to search fro dependencies.
+ * @param filter Filter to apply when searching for dependencies.
+ * @return DependencyNode containing the dependency tree for the project.
+ * @throws DependencyTreeBuilderException if the dependency tree could not be built.
+ */
public DependencyNode buildDependencyTree( MavenProject project, ArtifactRepository repository,
ArtifactFilter filter )
throws DependencyTreeBuilderException
Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java?rev=1595871&r1=1595870&r2=1595871&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyNode.java Mon May 19 12:38:45 2014
@@ -42,6 +42,8 @@ public class DependencyNode
{
// constants --------------------------------------------------------------
+ private static final int HASH_PRIME = 31;
+
/**
* State that represents an included dependency node.
*
@@ -714,6 +716,9 @@ public class DependencyNode
case OMITTED_FOR_CYCLE:
appender.append( "omitted for cycle" );
break;
+
+ default:
+ break;
}
appender.flush();
@@ -752,22 +757,22 @@ public class DependencyNode
int hashCode = 1;
- hashCode = hashCode * 31 + getArtifact().hashCode();
+ hashCode = hashCode * HASH_PRIME + getArtifact().hashCode();
// DefaultArtifact.hashCode does not consider scope
- hashCode = hashCode * 31 + nullHashCode( getArtifact().getScope() );
+ hashCode = hashCode * HASH_PRIME + nullHashCode( getArtifact().getScope() );
// TODO: use parent's artifact to prevent recursion - how can we improve this?
- hashCode = hashCode * 31 + nullHashCode( nullGetArtifact( getParent() ) );
+ hashCode = hashCode * HASH_PRIME + nullHashCode( nullGetArtifact( getParent() ) );
- hashCode = hashCode * 31 + getChildren().hashCode();
- hashCode = hashCode * 31 + getState();
- hashCode = hashCode * 31 + nullHashCode( getRelatedArtifact() );
- hashCode = hashCode * 31 + nullHashCode( getPremanagedVersion() );
- hashCode = hashCode * 31 + nullHashCode( getPremanagedScope() );
- hashCode = hashCode * 31 + nullHashCode( getOriginalScope() );
- hashCode = hashCode * 31 + nullHashCode( getFailedUpdateScope() );
- hashCode = hashCode * 31 + nullHashCode( getVersionSelectedFromRange() );
- hashCode = hashCode * 31 + nullHashCode( getAvailableVersions() );
+ hashCode = hashCode * HASH_PRIME + getChildren().hashCode();
+ hashCode = hashCode * HASH_PRIME + getState();
+ hashCode = hashCode * HASH_PRIME + nullHashCode( getRelatedArtifact() );
+ hashCode = hashCode * HASH_PRIME + nullHashCode( getPremanagedVersion() );
+ hashCode = hashCode * HASH_PRIME + nullHashCode( getPremanagedScope() );
+ hashCode = hashCode * HASH_PRIME + nullHashCode( getOriginalScope() );
+ hashCode = hashCode * HASH_PRIME + nullHashCode( getFailedUpdateScope() );
+ hashCode = hashCode * HASH_PRIME + nullHashCode( getVersionSelectedFromRange() );
+ hashCode = hashCode * HASH_PRIME + nullHashCode( getAvailableVersions() );
return hashCode;
}
Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeBuilder.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeBuilder.java?rev=1595871&r1=1595870&r2=1595871&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeBuilder.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeBuilder.java Mon May 19 12:38:45 2014
@@ -57,7 +57,8 @@ public interface DependencyTreeBuilder
* @return the dependency tree of the specified Maven project
* @throws DependencyTreeBuilderException if the dependency tree cannot be resolved
* @deprecated As of 1.1, replaced by
- * {@link #buildDependencyTree(MavenProject, ArtifactRepository, ArtifactFactory, ArtifactMetadataSource, ArtifactFilter, ArtifactCollector)}
+ * {@link #buildDependencyTree(MavenProject, ArtifactRepository, ArtifactFactory, ArtifactMetadataSource,
+ * ArtifactFilter, ArtifactCollector)}
*/
DependencyTree buildDependencyTree( MavenProject project, ArtifactRepository repository, ArtifactFactory factory,
ArtifactMetadataSource metadataSource, ArtifactCollector collector )
Modified: maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeResolutionListener.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeResolutionListener.java?rev=1595871&r1=1595870&r2=1595871&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeResolutionListener.java (original)
+++ maven/shared/trunk/maven-dependency-tree/src/main/java/org/apache/maven/shared/dependency/tree/DependencyTreeResolutionListener.java Mon May 19 12:38:45 2014
@@ -30,7 +30,6 @@ import org.apache.maven.artifact.Artifac
import org.apache.maven.artifact.resolver.ResolutionListener;
import org.apache.maven.artifact.resolver.ResolutionListenerForDepMgmt;
import org.apache.maven.artifact.versioning.VersionRange;
-import org.apache.maven.shared.dependency.tree.traversal.CollectingDependencyNodeVisitor;
import org.codehaus.plexus.logging.Logger;
/**
@@ -313,7 +312,8 @@ public class DependencyTreeResolutionLis
*/
public void restrictRange( Artifact artifact, Artifact replacement, VersionRange versionRange )
{
- log( "restrictRange: artifact=" + artifact + ", replacement=" + replacement + ", versionRange=" + versionRange );
+ log( "restrictRange: artifact=" + artifact + ", replacement=" + replacement
+ + ", versionRange=" + versionRange );
// TODO: track range restriction in node (MNG-3093)
}
@@ -368,7 +368,9 @@ public class DependencyTreeResolutionLis
* Gets a list of all dependency nodes in the computed dependency tree.
*
* @return a list of dependency nodes
- * @deprecated As of 1.1, use a {@link CollectingDependencyNodeVisitor} on the root dependency node
+ * @deprecated As of 1.1, use a
+ * {@link org.apache.maven.shared.dependency.tree.traversal.CollectingDependencyNodeVisitor}
+ * on the root dependency node
*/
public Collection<DependencyNode> getNodes()
{