e2b0033
From 6a4c8a3177ad95989baa4df28d8a3479faf8be8c Mon Sep 17 00:00:00 2001
820761f
From: Mikolaj Izdebski <mizdebsk@redhat.com>
820761f
Date: Mon, 12 Oct 2015 15:48:16 +0200
820761f
Subject: [PATCH] Port to Maven 3 API
820761f
820761f
---
0eb432b
 enforcer-rules/pom.xml                        |  6 ++-
0eb432b
 .../enforcer/AbstractBanDependencies.java     | 13 +++--
0eb432b
 .../enforcer/BanTransitiveDependencies.java   |  7 ++-
0eb432b
 .../enforcer/DependencyConvergence.java       | 29 +++++------
69848d6
 .../enforcer/RequirePluginVersions.java       | 51 +++++++------------
69848d6
 .../enforcer/RequireUpperBoundDeps.java       | 31 ++++-------
0eb432b
 .../enforcer/utils/DependencyVersionMap.java  |  6 +--
69848d6
 .../enforcer/utils/EnforcerRuleUtils.java     | 40 +++------------
69848d6
 pom.xml                                       | 11 ++--
69848d6
 9 files changed, 78 insertions(+), 116 deletions(-)
820761f
820761f
diff --git a/enforcer-rules/pom.xml b/enforcer-rules/pom.xml
69848d6
index 187d38b..076c84a 100644
820761f
--- a/enforcer-rules/pom.xml
820761f
+++ b/enforcer-rules/pom.xml
0eb432b
@@ -43,12 +43,16 @@
69848d6
     </dependency>
69848d6
     <dependency>
69848d6
       <groupId>org.apache.maven</groupId>
69848d6
-      <artifactId>maven-core</artifactId>
69848d6
+      <artifactId>maven-compat</artifactId>
69848d6
     </dependency>
69848d6
     <dependency>
69848d6
       <groupId>org.apache.maven.shared</groupId>
69848d6
       <artifactId>maven-common-artifact-filters</artifactId>
69848d6
     </dependency>
69848d6
+    <dependency>
69848d6
+      <groupId>org.apache.maven.shared</groupId>
69848d6
+      <artifactId>maven-artifact-transfer</artifactId>
69848d6
+    </dependency>
69848d6
     <dependency>
69848d6
       <groupId>org.codehaus.plexus</groupId>
69848d6
       <artifactId>plexus-utils</artifactId>
820761f
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java
69848d6
index 2888a61..cfd5338 100644
820761f
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java
820761f
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java
69848d6
@@ -23,8 +23,10 @@ import org.apache.maven.artifact.Artifact;
69848d6
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
69848d6
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
69848d6
 import org.apache.maven.plugin.logging.Log;
69848d6
+import org.apache.maven.project.DefaultProjectBuildingRequest;
69848d6
 import org.apache.maven.plugins.enforcer.utils.ArtifactUtils;
69848d6
 import org.apache.maven.project.MavenProject;
69848d6
+import org.apache.maven.project.ProjectBuildingRequest;
69848d6
 import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
69848d6
 import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
69848d6
 import org.apache.maven.shared.dependency.graph.DependencyNode;
0eb432b
@@ -53,10 +55,11 @@ public abstract class AbstractBanDependencies
69848d6
     {
69848d6
 
69848d6
         // get the project
69848d6
-        MavenProject project = null;
69848d6
+        ProjectBuildingRequest projectBuildingRequest = null;
69848d6
         try
69848d6
         {
69848d6
-            project = (MavenProject) helper.evaluate( "${project}" );
69848d6
+            projectBuildingRequest = new DefaultProjectBuildingRequest( (ProjectBuildingRequest) helper.evaluate( "${session.projectBuildingRequest}" ) );
69848d6
+            projectBuildingRequest.setProject( (MavenProject) helper.evaluate( "${project}" ) );
69848d6
         }
69848d6
         catch ( ExpressionEvaluationException eee )
69848d6
         {
0eb432b
@@ -83,7 +86,7 @@ public abstract class AbstractBanDependencies
69848d6
         }
69848d6
 
69848d6
         // get the correct list of dependencies
69848d6
-        Set<Artifact> dependencies = getDependenciesToCheck( project );
69848d6
+        Set<Artifact> dependencies = getDependenciesToCheck( projectBuildingRequest );
69848d6
 
69848d6
         // look for banned dependencies
69848d6
         Set<Artifact> foundExcludes = checkDependencies( dependencies, helper.getLog() );
0eb432b
@@ -114,12 +117,12 @@ public abstract class AbstractBanDependencies
69848d6
         return "Found Banned Dependency: " + artifact.getId() + System.lineSeparator();
69848d6
     }
69848d6
 
69848d6
-    protected Set<Artifact> getDependenciesToCheck( MavenProject project )
69848d6
+    protected Set<Artifact> getDependenciesToCheck( ProjectBuildingRequest projectBuildingRequest )
69848d6
     {
69848d6
         Set<Artifact> dependencies = null;
69848d6
         try
69848d6
         {
69848d6
-            DependencyNode node = graphBuilder.buildDependencyGraph( project, null );
69848d6
+            DependencyNode node = graphBuilder.buildDependencyGraph( projectBuildingRequest, null );
69848d6
             if ( searchTransitive )
69848d6
             {
69848d6
                 dependencies = ArtifactUtils.getAllDescendants( node );
820761f
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanTransitiveDependencies.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanTransitiveDependencies.java
69848d6
index 6e1dcd4..b84f421 100644
820761f
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanTransitiveDependencies.java
820761f
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanTransitiveDependencies.java
e2b0033
@@ -27,7 +27,9 @@ import org.apache.maven.enforcer.rule.api.EnforcerRule;
69848d6
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
69848d6
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
69848d6
 import org.apache.maven.plugins.enforcer.utils.ArtifactMatcher;
69848d6
+import org.apache.maven.project.DefaultProjectBuildingRequest;
69848d6
 import org.apache.maven.project.MavenProject;
69848d6
+import org.apache.maven.project.ProjectBuildingRequest;
69848d6
 import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
69848d6
 import org.apache.maven.shared.dependency.graph.DependencyNode;
69848d6
 import org.apache.maven.shared.dependency.graph.internal.DefaultDependencyGraphBuilder;
0eb432b
@@ -157,8 +159,9 @@ public class BanTransitiveDependencies
69848d6
 
69848d6
         try
69848d6
         {
69848d6
-            MavenProject project = (MavenProject) helper.evaluate( "${project}" );
69848d6
-            rootNode = createDependencyGraphBuilder().buildDependencyGraph( project, null );
69848d6
+            ProjectBuildingRequest projectBuildingRequest = new DefaultProjectBuildingRequest( (ProjectBuildingRequest) helper.evaluate( "${session.projectBuildingRequest}" ) );
69848d6
+            projectBuildingRequest.setProject( (MavenProject) helper.evaluate( "${project}" ) );
69848d6
+            rootNode = createDependencyGraphBuilder().buildDependencyGraph( projectBuildingRequest, null );
69848d6
         }
69848d6
         catch ( Exception e )
69848d6
         {
0eb432b
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BannedPlugins.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BannedPlugins.java
69848d6
index 03201fd..35bcd57 100644
0eb432b
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BannedPlugins.java
0eb432b
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BannedPlugins.java
0eb432b
@@ -23,6 +23,7 @@ import java.util.Set;
69848d6
 
69848d6
 import org.apache.maven.artifact.Artifact;
69848d6
 import org.apache.maven.project.MavenProject;
69848d6
+import org.apache.maven.project.ProjectBuildingRequest;
69848d6
 
69848d6
 /**
69848d6
  * This rule checks that lists of plugins are not included.
69848d6
@@ -33,9 +34,9 @@ public class BannedPlugins
69848d6
     extends BannedDependencies
69848d6
 {
69848d6
     @Override
69848d6
-    protected Set<Artifact> getDependenciesToCheck( MavenProject project )
69848d6
+    protected Set<Artifact> getDependenciesToCheck( ProjectBuildingRequest projectBuildingRequest )
69848d6
     {
69848d6
-        return project.getPluginArtifacts();
69848d6
+        return projectBuildingRequest.getProject().getPluginArtifacts();
69848d6
     }
69848d6
 
69848d6
     @Override
820761f
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java
69848d6
index 684f984..4795634 100644
820761f
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java
820761f
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java
e2b0033
@@ -24,20 +24,19 @@ import java.util.Collections;
69848d6
 import java.util.List;
69848d6
 
69848d6
 import org.apache.maven.artifact.Artifact;
69848d6
-import org.apache.maven.artifact.factory.ArtifactFactory;
69848d6
-import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
69848d6
 import org.apache.maven.artifact.repository.ArtifactRepository;
69848d6
-import org.apache.maven.artifact.resolver.ArtifactCollector;
69848d6
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
69848d6
 import org.apache.maven.enforcer.rule.api.EnforcerRule;
69848d6
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
69848d6
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
69848d6
 import org.apache.maven.plugin.logging.Log;
69848d6
 import org.apache.maven.plugins.enforcer.utils.DependencyVersionMap;
69848d6
+import org.apache.maven.project.DefaultProjectBuildingRequest;
69848d6
 import org.apache.maven.project.MavenProject;
69848d6
-import org.apache.maven.shared.dependency.tree.DependencyNode;
69848d6
-import org.apache.maven.shared.dependency.tree.DependencyTreeBuilder;
69848d6
-import org.apache.maven.shared.dependency.tree.DependencyTreeBuilderException;
69848d6
+import org.apache.maven.project.ProjectBuildingRequest;
69848d6
+import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
69848d6
+import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
69848d6
+import org.apache.maven.shared.dependency.graph.DependencyNode;
69848d6
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
69848d6
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
69848d6
 
0eb432b
@@ -74,17 +73,13 @@ public class DependencyConvergence
69848d6
     {
69848d6
         try
69848d6
         {
69848d6
-            MavenProject project = (MavenProject) helper.evaluate( "${project}" );
69848d6
-            DependencyTreeBuilder dependencyTreeBuilder =
69848d6
-                (DependencyTreeBuilder) helper.getComponent( DependencyTreeBuilder.class );
69848d6
+            ProjectBuildingRequest projectBuildingRequest = new DefaultProjectBuildingRequest( (ProjectBuildingRequest) helper.evaluate( "${session.projectBuildingRequest}" ) );
69848d6
+            projectBuildingRequest.setProject( (MavenProject) helper.evaluate( "${project}" ) );
69848d6
+            DependencyGraphBuilder dependencyGraphBuilder = (DependencyGraphBuilder) helper.getComponent( DependencyGraphBuilder.class );
69848d6
             ArtifactRepository repository = (ArtifactRepository) helper.evaluate( "${localRepository}" );
69848d6
-            ArtifactFactory factory = (ArtifactFactory) helper.getComponent( ArtifactFactory.class );
69848d6
-            ArtifactMetadataSource metadataSource =
69848d6
-                (ArtifactMetadataSource) helper.getComponent( ArtifactMetadataSource.class );
69848d6
-            ArtifactCollector collector = (ArtifactCollector) helper.getComponent( ArtifactCollector.class );
69848d6
             ArtifactFilter filter = null; // we need to evaluate all scopes
69848d6
-            DependencyNode node = dependencyTreeBuilder.buildDependencyTree( project, repository, factory,
69848d6
-                                                                             metadataSource, filter, collector );
69848d6
+            projectBuildingRequest.setLocalRepository( repository );
69848d6
+            DependencyNode node = dependencyGraphBuilder.buildDependencyGraph( projectBuildingRequest, filter );
69848d6
             return node;
69848d6
         }
69848d6
         catch ( ExpressionEvaluationException e )
0eb432b
@@ -95,9 +90,9 @@ public class DependencyConvergence
69848d6
         {
69848d6
             throw new EnforcerRuleException( "Unable to lookup a component " + e.getLocalizedMessage(), e );
69848d6
         }
69848d6
-        catch ( DependencyTreeBuilderException e )
69848d6
+        catch ( DependencyGraphBuilderException e )
69848d6
         {
69848d6
-            throw new EnforcerRuleException( "Could not build dependency tree " + e.getLocalizedMessage(), e );
69848d6
+            throw new EnforcerRuleException( "Could not build dependency graph " + e.getLocalizedMessage(), e );
69848d6
         }
69848d6
     }
69848d6
 
820761f
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java
69848d6
index 34f0f20..1323b11 100644
820761f
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java
820761f
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java
69848d6
@@ -36,7 +36,6 @@ import org.apache.maven.artifact.factory.ArtifactFactory;
69848d6
 import org.apache.maven.artifact.repository.ArtifactRepository;
69848d6
 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
69848d6
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
69848d6
-import org.apache.maven.artifact.resolver.ArtifactResolver;
69848d6
 import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
69848d6
 import org.apache.maven.artifact.versioning.VersionRange;
69848d6
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
69848d6
@@ -62,8 +61,12 @@ import org.apache.maven.plugin.version.PluginVersionNotFoundException;
69848d6
 import org.apache.maven.plugin.version.PluginVersionResolutionException;
69848d6
 import org.apache.maven.plugins.enforcer.utils.EnforcerRuleUtils;
69848d6
 import org.apache.maven.plugins.enforcer.utils.PluginWrapper;
69848d6
+import org.apache.maven.project.DefaultProjectBuildingRequest;
69848d6
 import org.apache.maven.project.MavenProject;
69848d6
+import org.apache.maven.project.ProjectBuildingRequest;
69848d6
 import org.apache.maven.settings.Settings;
69848d6
+import org.apache.maven.shared.artifact.resolve.ArtifactResolver;
69848d6
+import org.apache.maven.shared.artifact.resolve.ArtifactResolverException;
69848d6
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
69848d6
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
69848d6
 import org.codehaus.plexus.util.ReflectionUtils;
69848d6
@@ -166,12 +169,6 @@ public class RequirePluginVersions
69848d6
     /** The resolver. */
69848d6
     private ArtifactResolver resolver;
69848d6
 
69848d6
-    /** The local. */
69848d6
-    private ArtifactRepository local;
69848d6
-
69848d6
-    /** The remote repositories. */
69848d6
-    private List<ArtifactRepository> remoteRepositories;
69848d6
-
69848d6
     /** The log. */
69848d6
     private Log log;
69848d6
 
69848d6
@@ -205,8 +202,8 @@ public class RequirePluginVersions
69848d6
             pluginManager = (PluginManager) helper.getComponent( PluginManager.class );
69848d6
             factory = (ArtifactFactory) helper.getComponent( ArtifactFactory.class );
69848d6
             resolver = (ArtifactResolver) helper.getComponent( ArtifactResolver.class );
69848d6
-            local = (ArtifactRepository) helper.evaluate( "${localRepository}" );
69848d6
-            remoteRepositories = project.getRemoteArtifactRepositories();
69848d6
+            ProjectBuildingRequest projectBuildingRequest = new DefaultProjectBuildingRequest( (ProjectBuildingRequest) helper.evaluate( "${session.projectBuildingRequest}" ) );
69848d6
+            projectBuildingRequest.setProject( project );
69848d6
 
69848d6
             utils = new EnforcerRuleUtils( helper );
69848d6
 
69848d6
@@ -254,7 +251,7 @@ public class RequirePluginVersions
69848d6
             // if anything was found, log it then append the optional message.
69848d6
             if ( !failures.isEmpty() )
69848d6
             {
69848d6
-                handleMessagesToTheUser( project, failures );
69848d6
+                handleMessagesToTheUser( projectBuildingRequest, failures );
69848d6
             }
69848d6
         }
69848d6
         catch ( ExpressionEvaluationException e )
69848d6
@@ -277,13 +274,9 @@ public class RequirePluginVersions
69848d6
         {
69848d6
             throw new EnforcerRuleException( e.getLocalizedMessage() );
69848d6
         }
69848d6
-        catch ( ArtifactResolutionException e )
69848d6
-        {
69848d6
-            throw new EnforcerRuleException( e.getLocalizedMessage() );
69848d6
-        }
69848d6
-        catch ( ArtifactNotFoundException e )
69848d6
+        catch ( ArtifactResolverException e )
69848d6
         {
69848d6
-            throw new EnforcerRuleException( e.getLocalizedMessage() );
69848d6
+            // What does this mean?
69848d6
         }
69848d6
         catch ( IOException e )
69848d6
         {
69848d6
@@ -299,7 +292,7 @@ public class RequirePluginVersions
69848d6
         }
69848d6
     }
69848d6
 
69848d6
-    private void handleMessagesToTheUser( MavenProject project, List<Plugin> failures )
69848d6
+    private void handleMessagesToTheUser( ProjectBuildingRequest projectBuildingRequest, List<Plugin> failures )
69848d6
         throws EnforcerRuleException
69848d6
     {
69848d6
         StringBuilder newMsg = new StringBuilder();
69848d6
@@ -316,7 +309,7 @@ public class RequirePluginVersions
69848d6
             {
69848d6
                 newMsg.append( ". \tThe version currently in use is " );
69848d6
 
69848d6
-                Plugin currentPlugin = findCurrentPlugin( plugin, project );
69848d6
+                Plugin currentPlugin = findCurrentPlugin( plugin, projectBuildingRequest );
69848d6
 
69848d6
                 if ( currentPlugin != null )
69848d6
                 {
69848d6
@@ -518,12 +511,12 @@ public class RequirePluginVersions
69848d6
      * @param project project to search
69848d6
      * @return matching plugin, null if not found.
69848d6
      */
69848d6
-    protected Plugin findCurrentPlugin( Plugin plugin, MavenProject project )
69848d6
+    protected Plugin findCurrentPlugin( Plugin plugin, ProjectBuildingRequest projectBuildingRequest )
69848d6
     {
69848d6
         Plugin found = null;
69848d6
         try
69848d6
         {
69848d6
-            Model model = project.getModel();
69848d6
+            Model model = projectBuildingRequest.getProject().getModel();
69848d6
             Map<String, Plugin> plugins = model.getBuild().getPluginsAsMap();
69848d6
             found = plugins.get( plugin.getKey() );
69848d6
         }
69848d6
@@ -534,7 +527,7 @@ public class RequirePluginVersions
69848d6
 
69848d6
         if ( found == null )
69848d6
         {
69848d6
-            found = resolvePlugin( plugin, project );
69848d6
+            found = resolvePlugin( plugin, projectBuildingRequest );
69848d6
         }
69848d6
 
69848d6
         return found;
69848d6
@@ -547,23 +540,18 @@ public class RequirePluginVersions
69848d6
      * @param project the project
69848d6
      * @return the plugin
69848d6
      */
69848d6
-    protected Plugin resolvePlugin( Plugin plugin, MavenProject project )
69848d6
+    protected Plugin resolvePlugin( Plugin plugin, ProjectBuildingRequest projectBuildingRequest )
69848d6
     {
69848d6
 
69848d6
-        List<ArtifactRepository> pluginRepositories = project.getPluginArtifactRepositories();
69848d6
         Artifact artifact = factory.createPluginArtifact( plugin.getGroupId(), plugin.getArtifactId(),
69848d6
                                                           VersionRange.createFromVersion( "LATEST" ) );
69848d6
 
69848d6
         try
69848d6
         {
69848d6
-            this.resolver.resolve( artifact, pluginRepositories, this.local );
69848d6
+            this.resolver.resolveArtifact( projectBuildingRequest, artifact );
69848d6
             plugin.setVersion( artifact.getVersion() );
69848d6
         }
69848d6
-        catch ( ArtifactResolutionException e )
69848d6
-        {
69848d6
-            // What does this mean?
69848d6
-        }
69848d6
-        catch ( ArtifactNotFoundException e )
69848d6
+        catch ( ArtifactResolverException e )
69848d6
         {
69848d6
             // What does this mean?
69848d6
         }
69848d6
@@ -1046,13 +1034,12 @@ public class RequirePluginVersions
69848d6
      *
69848d6
      * @param project the project
69848d6
      * @return the all plugin entries wrapped in a PluginWrapper Object
69848d6
-     * @throws ArtifactResolutionException the artifact resolution exception
69848d6
-     * @throws ArtifactNotFoundException the artifact not found exception
69848d6
+     * @throws ArtifactResolverException the artifact resolution exception
69848d6
      * @throws IOException Signals that an I/O exception has occurred.
69848d6
      * @throws XmlPullParserException the xml pull parser exception
69848d6
      */
69848d6
     protected List<PluginWrapper> getAllPluginEntries( MavenProject project )
69848d6
-        throws ArtifactResolutionException, ArtifactNotFoundException, IOException, XmlPullParserException
69848d6
+        throws ArtifactResolverException, IOException, XmlPullParserException
69848d6
     {
69848d6
         List<Model> models = new ArrayList<Model>();
69848d6
 
820761f
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDeps.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDeps.java
69848d6
index 458554a..c48205f 100644
820761f
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDeps.java
820761f
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDeps.java
820761f
@@ -26,10 +26,7 @@ import java.util.List;
69848d6
 import java.util.Map;
69848d6
 
69848d6
 import org.apache.maven.artifact.Artifact;
69848d6
-import org.apache.maven.artifact.factory.ArtifactFactory;
69848d6
-import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
69848d6
 import org.apache.maven.artifact.repository.ArtifactRepository;
69848d6
-import org.apache.maven.artifact.resolver.ArtifactCollector;
69848d6
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
69848d6
 import org.apache.maven.artifact.versioning.ArtifactVersion;
69848d6
 import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
e2b0033
@@ -37,11 +34,13 @@ import org.apache.maven.artifact.versioning.OverConstrainedVersionException;
69848d6
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
69848d6
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
69848d6
 import org.apache.maven.plugin.logging.Log;
69848d6
+import org.apache.maven.project.DefaultProjectBuildingRequest;
69848d6
 import org.apache.maven.project.MavenProject;
69848d6
-import org.apache.maven.shared.dependency.tree.DependencyNode;
69848d6
-import org.apache.maven.shared.dependency.tree.DependencyTreeBuilder;
69848d6
-import org.apache.maven.shared.dependency.tree.DependencyTreeBuilderException;
69848d6
-import org.apache.maven.shared.dependency.tree.traversal.DependencyNodeVisitor;
69848d6
+import org.apache.maven.project.ProjectBuildingRequest;
69848d6
+import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
69848d6
+import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
69848d6
+import org.apache.maven.shared.dependency.graph.DependencyNode;
69848d6
+import org.apache.maven.shared.dependency.graph.traversal.DependencyNodeVisitor;
69848d6
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
69848d6
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
69848d6
 
0eb432b
@@ -105,18 +104,10 @@ public class RequireUpperBoundDeps
69848d6
     {
69848d6
         try
69848d6
         {
69848d6
-            MavenProject project = (MavenProject) helper.evaluate( "${project}" );
69848d6
-            DependencyTreeBuilder dependencyTreeBuilder =
69848d6
-                (DependencyTreeBuilder) helper.getComponent( DependencyTreeBuilder.class );
69848d6
-            ArtifactRepository repository = (ArtifactRepository) helper.evaluate( "${localRepository}" );
69848d6
-            ArtifactFactory factory = (ArtifactFactory) helper.getComponent( ArtifactFactory.class );
69848d6
-            ArtifactMetadataSource metadataSource =
69848d6
-                (ArtifactMetadataSource) helper.getComponent( ArtifactMetadataSource.class );
69848d6
-            ArtifactCollector collector = (ArtifactCollector) helper.getComponent( ArtifactCollector.class );
69848d6
-            ArtifactFilter filter = null; // we need to evaluate all scopes
69848d6
-            DependencyNode node =
69848d6
-                dependencyTreeBuilder.buildDependencyTree( project, repository, factory, metadataSource, filter,
69848d6
-                                                           collector );
69848d6
+            ProjectBuildingRequest projectBuildingRequest = new DefaultProjectBuildingRequest( (ProjectBuildingRequest) helper.evaluate( "${session.projectBuildingRequest}" ) );
69848d6
+            projectBuildingRequest.setProject( (MavenProject) helper.evaluate( "${project}" ) );
69848d6
+            DependencyGraphBuilder dependencyGraphBuilder = (DependencyGraphBuilder) helper.getComponent( DependencyGraphBuilder.class );
69848d6
+            DependencyNode node = dependencyGraphBuilder.buildDependencyGraph( projectBuildingRequest, null );
69848d6
             return node;
69848d6
         }
69848d6
         catch ( ExpressionEvaluationException e )
0eb432b
@@ -127,7 +118,7 @@ public class RequireUpperBoundDeps
69848d6
         {
69848d6
             throw new EnforcerRuleException( "Unable to lookup a component " + e.getLocalizedMessage(), e );
69848d6
         }
69848d6
-        catch ( DependencyTreeBuilderException e )
69848d6
+        catch ( DependencyGraphBuilderException e )
69848d6
         {
69848d6
             throw new EnforcerRuleException( "Could not build dependency tree " + e.getLocalizedMessage(), e );
69848d6
         }
820761f
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/DependencyVersionMap.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/DependencyVersionMap.java
69848d6
index b6213fa..2c2a645 100644
820761f
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/DependencyVersionMap.java
820761f
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/DependencyVersionMap.java
820761f
@@ -26,8 +26,8 @@ import java.util.Map;
69848d6
 
69848d6
 import org.apache.maven.artifact.Artifact;
69848d6
 import org.apache.maven.plugin.logging.Log;
69848d6
-import org.apache.maven.shared.dependency.tree.DependencyNode;
69848d6
-import org.apache.maven.shared.dependency.tree.traversal.DependencyNodeVisitor;
69848d6
+import org.apache.maven.shared.dependency.graph.DependencyNode;
69848d6
+import org.apache.maven.shared.dependency.graph.traversal.DependencyNodeVisitor;
69848d6
 
69848d6
 /**
69848d6
  * @author Brian Fox
0eb432b
@@ -132,4 +132,4 @@ public class DependencyVersionMap
69848d6
         }
69848d6
         return output;
69848d6
     }
0eb432b
-}
0eb432b
\ No newline at end of file
69848d6
+}
820761f
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/EnforcerRuleUtils.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/EnforcerRuleUtils.java
69848d6
index c122e10..a9208f7 100644
820761f
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/EnforcerRuleUtils.java
820761f
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/EnforcerRuleUtils.java
0eb432b
@@ -23,12 +23,15 @@ import java.util.List;
69848d6
 
69848d6
 import org.apache.maven.artifact.factory.ArtifactFactory;
69848d6
 import org.apache.maven.artifact.repository.ArtifactRepository;
69848d6
-import org.apache.maven.artifact.resolver.ArtifactResolver;
69848d6
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
69848d6
 import org.apache.maven.model.Plugin;
69848d6
 import org.apache.maven.model.ReportPlugin;
69848d6
 import org.apache.maven.plugin.logging.Log;
69848d6
+import org.apache.maven.project.DefaultProjectBuildingRequest;
69848d6
 import org.apache.maven.project.MavenProject;
69848d6
+import org.apache.maven.project.ProjectBuildingRequest;
69848d6
+import org.apache.maven.shared.artifact.resolve.ArtifactResolver;
69848d6
+import org.apache.maven.shared.artifact.resolve.ArtifactResolverException;
69848d6
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
69848d6
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
69848d6
 
0eb432b
@@ -46,42 +49,14 @@ public class EnforcerRuleUtils
69848d6
     /** The resolver. */
69848d6
     ArtifactResolver resolver;
69848d6
 
69848d6
-    /** The local. */
69848d6
-    ArtifactRepository local;
69848d6
-
69848d6
-    /** The remote repositories. */
69848d6
-    List<ArtifactRepository> remoteRepositories;
69848d6
-
69848d6
     /** The log. */
69848d6
     Log log;
69848d6
 
69848d6
     /** The project. */
69848d6
-    MavenProject project;
69848d6
+    ProjectBuildingRequest projectBuildingRequest;
69848d6
 
69848d6
     private EnforcerRuleHelper helper;
69848d6
 
69848d6
-    /**
69848d6
-     * Instantiates a new enforcer rule utils.
69848d6
-     *
69848d6
-     * @param theFactory the the factory
69848d6
-     * @param theResolver the the resolver
69848d6
-     * @param theLocal the the local
69848d6
-     * @param theRemoteRepositories the the remote repositories
69848d6
-     * @param project the project
69848d6
-     * @param theLog the the log
69848d6
-     */
69848d6
-    public EnforcerRuleUtils( ArtifactFactory theFactory, ArtifactResolver theResolver, ArtifactRepository theLocal,
69848d6
-                              List<ArtifactRepository> theRemoteRepositories, MavenProject project, Log theLog )
69848d6
-    {
69848d6
-        super();
69848d6
-        this.factory = theFactory;
69848d6
-        this.resolver = theResolver;
69848d6
-        this.local = theLocal;
69848d6
-        this.remoteRepositories = theRemoteRepositories;
69848d6
-        this.log = theLog;
69848d6
-        this.project = project;
69848d6
-    }
69848d6
-
69848d6
     /**
69848d6
      * Instantiates a new enforcer rule utils.
69848d6
      *
0eb432b
@@ -97,9 +72,8 @@ public class EnforcerRuleUtils
69848d6
         {
69848d6
             factory = (ArtifactFactory) helper.getComponent( ArtifactFactory.class );
69848d6
             resolver = (ArtifactResolver) helper.getComponent( ArtifactResolver.class );
69848d6
-            local = (ArtifactRepository) helper.evaluate( "${localRepository}" );
69848d6
-            project = (MavenProject) helper.evaluate( "${project}" );
69848d6
-            remoteRepositories = project.getRemoteArtifactRepositories();
69848d6
+            projectBuildingRequest = new DefaultProjectBuildingRequest( (ProjectBuildingRequest) helper.evaluate( "${session.projectBuildingRequest}" ) );
69848d6
+            projectBuildingRequest.setProject( (MavenProject) helper.evaluate( "${project}" ) );
69848d6
         }
69848d6
         catch ( ComponentLookupException e )
69848d6
         {
820761f
diff --git a/pom.xml b/pom.xml
69848d6
index 83306f1..79dd17f 100644
820761f
--- a/pom.xml
820761f
+++ b/pom.xml
0eb432b
@@ -63,7 +63,7 @@
69848d6
     </site>
69848d6
   </distributionManagement>
69848d6
   <properties>
69848d6
-    <maven.version>3.0</maven.version>
69848d6
+    <maven.version>3.3.1</maven.version>
69848d6
     <maven.site.path>enforcer-archives/enforcer-LATEST</maven.site.path>
69848d6
     <javaVersion>7</javaVersion>
69848d6
   </properties>
0eb432b
@@ -139,16 +139,21 @@
69848d6
         <artifactId>commons-codec</artifactId>
69848d6
         <version>1.12</version>
69848d6
       </dependency>
69848d6
+      <dependency>
69848d6
+        <groupId>org.apache.maven.shared</groupId>
69848d6
+        <artifactId>maven-artifact-transfer</artifactId>
69848d6
+        <version>3.0-SNAPSHOT</version>
69848d6
+      </dependency>
69848d6
       <dependency>
69848d6
         <groupId>org.apache.maven.plugin-testing</groupId>
69848d6
         <artifactId>maven-plugin-testing-harness</artifactId>
69848d6
-        <version>2.1</version>
69848d6
+        <version>3.3.0</version>
69848d6
         <scope>test</scope>
69848d6
       </dependency>
69848d6
       <dependency>
69848d6
         <groupId>org.apache.maven.shared</groupId>
69848d6
         <artifactId>maven-dependency-tree</artifactId>
69848d6
-        <version>2.2</version>
69848d6
+        <version>3.0</version>
69848d6
       </dependency>
69848d6
       <dependency>
69848d6
         <groupId>org.apache.maven.resolver</groupId>