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 2013/06/21 23:50:46 UTC
svn commit: r1495609 -
/maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java
Author: rfscholte
Date: Fri Jun 21 21:50:46 2013
New Revision: 1495609
URL: http://svn.apache.org/r1495609
Log:
Make AbstractBanDependencies M2 proof
Modified:
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java
Modified: maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java
URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java?rev=1495609&r1=1495608&r2=1495609&view=diff
==============================================================================
--- maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java (original)
+++ maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java Fri Jun 21 21:50:46 2013
@@ -19,14 +19,22 @@ package org.apache.maven.plugins.enforce
* under the License.
*/
+import java.util.ArrayList;
+import java.util.HashSet;
import java.util.Set;
import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
import org.apache.maven.plugin.logging.Log;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.MavenProjectHelper;
+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.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
+import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
/**
* Abstract Rule for banning dependencies.
@@ -41,6 +49,8 @@ public abstract class AbstractBanDepende
/** Specify if transitive dependencies should be searched (default) or only look at direct dependencies. */
private boolean searchTransitive = true;
+ private DependencyGraphBuilder graphBuilder;
+
/**
* Execute the rule.
*
@@ -62,6 +72,15 @@ public abstract class AbstractBanDepende
throw new EnforcerRuleException( "Unable to retrieve the MavenProject: ", eee );
}
+ try
+ {
+ graphBuilder = (DependencyGraphBuilder) helper.getComponent( DependencyGraphBuilder.class );
+ }
+ catch ( ComponentLookupException e )
+ {
+ throw new EnforcerRuleException( "Unable to lookup DependencyGraphBuilder: ", e );
+ }
+
// get the correct list of dependencies
Set<Artifact> dependencies = getDependenciesToCheck( project );
@@ -106,9 +125,53 @@ public abstract class AbstractBanDepende
{
dependencies = project.getDependencyArtifacts();
}
+
+ // requiresDependencyCollection doesn't work for M2, this is the fallback
+ if( dependencies == null )
+ {
+ try
+ {
+ DependencyNode node = graphBuilder.buildDependencyGraph( project, null );
+ if( searchTransitive )
+ {
+ dependencies = getAllDescendants( node );
+ }
+ else if ( node.getChildren() != null )
+ {
+ dependencies = new HashSet<Artifact>();
+ for( DependencyNode depNode : node.getChildren() )
+ {
+ dependencies.add( depNode.getArtifact() );
+ }
+ }
+ }
+ catch ( DependencyGraphBuilderException e )
+ {
+ // otherwise we need to change the signature of this protected method
+ throw new RuntimeException( e );
+ }
+ }
return dependencies;
}
+ private Set<Artifact> getAllDescendants( DependencyNode node )
+ {
+ Set<Artifact> children = null;
+ if( node.getChildren() != null )
+ {
+ children = new HashSet<Artifact>();
+ for( DependencyNode depNode : node.getChildren() )
+ {
+ Set<Artifact> subNodes = getAllDescendants( depNode );
+ if( subNodes != null )
+ {
+ children.addAll( subNodes );
+ }
+ }
+ }
+ return children;
+ }
+
/**
* Checks the set of dependencies against the list of excludes.
*