Blame SOURCES/0001-Port-to-Maven-3-API.patch

946e9d
From 6a4c8a3177ad95989baa4df28d8a3479faf8be8c Mon Sep 17 00:00:00 2001
946e9d
From: Mikolaj Izdebski <mizdebsk@redhat.com>
946e9d
Date: Mon, 12 Oct 2015 15:48:16 +0200
946e9d
Subject: [PATCH] Port to Maven 3 API
946e9d
946e9d
---
946e9d
 enforcer-rules/pom.xml                             |  8 +++-
946e9d
 .../plugins/enforcer/AbstractBanDependencies.java  | 14 ++++--
946e9d
 .../enforcer/BanTransitiveDependencies.java        |  7 ++-
946e9d
 .../plugins/enforcer/DependencyConvergence.java    | 31 +++++-------
946e9d
 .../plugins/enforcer/RequireMavenVersion.java      |  5 +-
946e9d
 .../plugins/enforcer/RequireNoRepositories.java    |  9 +---
946e9d
 .../plugins/enforcer/RequirePluginVersions.java    | 45 +++++++-----------
946e9d
 .../plugins/enforcer/RequireUpperBoundDeps.java    | 32 +++++--------
946e9d
 .../enforcer/utils/DependencyVersionMap.java       |  4 +-
946e9d
 .../plugins/enforcer/utils/EnforcerRuleUtils.java  | 55 +++++-----------------
946e9d
 maven-enforcer-plugin/pom.xml                      |  4 --
946e9d
 .../maven/plugins/enforcer/DisplayInfoMojo.java    |  4 +-
946e9d
 pom.xml                                            | 19 +++++---
946e9d
 13 files changed, 94 insertions(+), 143 deletions(-)
946e9d
946e9d
diff --git a/enforcer-rules/pom.xml b/enforcer-rules/pom.xml
946e9d
index 5ecd495..379bef0 100644
946e9d
--- a/enforcer-rules/pom.xml
946e9d
+++ b/enforcer-rules/pom.xml
946e9d
@@ -43,17 +43,21 @@
946e9d
     </dependency>
946e9d
     <dependency>
946e9d
       <groupId>org.apache.maven</groupId>
946e9d
-      <artifactId>maven-project</artifactId>
946e9d
+      <artifactId>maven-core</artifactId>
946e9d
     </dependency>
946e9d
     <dependency>
946e9d
       <groupId>org.apache.maven</groupId>
946e9d
-      <artifactId>maven-core</artifactId>
946e9d
+      <artifactId>maven-compat</artifactId>
946e9d
     </dependency>
946e9d
     <dependency>
946e9d
       <groupId>org.apache.maven.shared</groupId>
946e9d
       <artifactId>maven-common-artifact-filters</artifactId>
946e9d
     </dependency>
946e9d
     <dependency>
946e9d
+      <groupId>org.apache.maven.shared</groupId>
946e9d
+      <artifactId>maven-artifact-transfer</artifactId>
946e9d
+    </dependency>
946e9d
+    <dependency>
946e9d
       <groupId>org.codehaus.plexus</groupId>
946e9d
       <artifactId>plexus-utils</artifactId>
946e9d
     </dependency>
946e9d
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
946e9d
index 960ef40..954ea2b 100644
946e9d
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java
946e9d
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractBanDependencies.java
946e9d
@@ -23,12 +23,15 @@ import org.apache.maven.artifact.Artifact;
946e9d
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
946e9d
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
946e9d
 import org.apache.maven.plugin.logging.Log;
946e9d
+import org.apache.maven.project.DefaultProjectBuildingRequest;
946e9d
 import org.apache.maven.project.MavenProject;
946e9d
+import org.apache.maven.project.ProjectBuildingRequest;
946e9d
 import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
946e9d
 import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
946e9d
 import org.apache.maven.shared.dependency.graph.DependencyNode;
946e9d
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
946e9d
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
946e9d
+
946e9d
 import java.util.HashSet;
946e9d
 import java.util.Set;
946e9d
 
946e9d
@@ -58,10 +61,11 @@ public abstract class AbstractBanDependencies
946e9d
     {
946e9d
 
946e9d
         // get the project
946e9d
-        MavenProject project = null;
946e9d
+        ProjectBuildingRequest projectBuildingRequest = null;
946e9d
         try
946e9d
         {
946e9d
-            project = (MavenProject) helper.evaluate( "${project}" );
946e9d
+            projectBuildingRequest = new DefaultProjectBuildingRequest( (ProjectBuildingRequest) helper.evaluate( "${session.projectBuildingRequest}" ) );
946e9d
+            projectBuildingRequest.setProject( (MavenProject) helper.evaluate( "${project}" ) );
946e9d
         }
946e9d
         catch ( ExpressionEvaluationException eee )
946e9d
         {
946e9d
@@ -88,7 +92,7 @@ public abstract class AbstractBanDependencies
946e9d
         }
946e9d
 
946e9d
         // get the correct list of dependencies
946e9d
-        Set<Artifact> dependencies = getDependenciesToCheck( project );
946e9d
+        Set<Artifact> dependencies = getDependenciesToCheck( projectBuildingRequest );
946e9d
 
946e9d
         // look for banned dependencies
946e9d
         Set<Artifact> foundExcludes = checkDependencies( dependencies, helper.getLog() );
946e9d
@@ -119,12 +123,12 @@ public abstract class AbstractBanDependencies
946e9d
         return "Found Banned Dependency: " + artifact.getId() + "\n";
946e9d
     }
946e9d
 
946e9d
-    protected Set<Artifact> getDependenciesToCheck( MavenProject project )
946e9d
+    protected Set<Artifact> getDependenciesToCheck( ProjectBuildingRequest projectBuildingRequest )
946e9d
     {
946e9d
         Set<Artifact> dependencies = null;
946e9d
         try
946e9d
         {
946e9d
-            DependencyNode node = graphBuilder.buildDependencyGraph( project, null );
946e9d
+            DependencyNode node = graphBuilder.buildDependencyGraph( projectBuildingRequest, null );
946e9d
             if ( searchTransitive )
946e9d
             {
946e9d
                 dependencies = getAllDescendants( node );
946e9d
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
946e9d
index c40e057..deb149c 100644
946e9d
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanTransitiveDependencies.java
946e9d
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BanTransitiveDependencies.java
946e9d
@@ -27,7 +27,9 @@ import org.apache.maven.enforcer.rule.api.EnforcerRule;
946e9d
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
946e9d
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
946e9d
 import org.apache.maven.plugins.enforcer.utils.ArtifactMatcher;
946e9d
+import org.apache.maven.project.DefaultProjectBuildingRequest;
946e9d
 import org.apache.maven.project.MavenProject;
946e9d
+import org.apache.maven.project.ProjectBuildingRequest;
946e9d
 import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
946e9d
 import org.apache.maven.shared.dependency.graph.DependencyNode;
946e9d
 import org.apache.maven.shared.dependency.graph.internal.DefaultDependencyGraphBuilder;
946e9d
@@ -156,8 +158,9 @@ public class BanTransitiveDependencies
946e9d
 
946e9d
         try
946e9d
         {
946e9d
-            MavenProject project = (MavenProject) helper.evaluate( "${project}" );
946e9d
-            rootNode = createDependencyGraphBuilder().buildDependencyGraph( project, null );
946e9d
+            ProjectBuildingRequest projectBuildingRequest = new DefaultProjectBuildingRequest( (ProjectBuildingRequest) helper.evaluate( "${session.projectBuildingRequest}" ) );
946e9d
+            projectBuildingRequest.setProject( (MavenProject) helper.evaluate( "${project}" ) );
946e9d
+            rootNode = createDependencyGraphBuilder().buildDependencyGraph( projectBuildingRequest, null );
946e9d
         }
946e9d
         catch ( Exception e )
946e9d
         {
946e9d
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
946e9d
index 6d42810..46ed075 100644
946e9d
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java
946e9d
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/DependencyConvergence.java
946e9d
@@ -24,20 +24,19 @@ import java.util.Collections;
946e9d
 import java.util.List;
946e9d
 
946e9d
 import org.apache.maven.artifact.Artifact;
946e9d
-import org.apache.maven.artifact.factory.ArtifactFactory;
946e9d
-import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
946e9d
 import org.apache.maven.artifact.repository.ArtifactRepository;
946e9d
-import org.apache.maven.artifact.resolver.ArtifactCollector;
946e9d
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
946e9d
 import org.apache.maven.enforcer.rule.api.EnforcerRule;
946e9d
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
946e9d
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
946e9d
 import org.apache.maven.plugin.logging.Log;
946e9d
 import org.apache.maven.plugins.enforcer.utils.DependencyVersionMap;
946e9d
+import org.apache.maven.project.DefaultProjectBuildingRequest;
946e9d
 import org.apache.maven.project.MavenProject;
946e9d
-import org.apache.maven.shared.dependency.tree.DependencyNode;
946e9d
-import org.apache.maven.shared.dependency.tree.DependencyTreeBuilder;
946e9d
-import org.apache.maven.shared.dependency.tree.DependencyTreeBuilderException;
946e9d
+import org.apache.maven.project.ProjectBuildingRequest;
946e9d
+import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
946e9d
+import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
946e9d
+import org.apache.maven.shared.dependency.graph.DependencyNode;
946e9d
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
946e9d
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
946e9d
 import org.codehaus.plexus.i18n.I18N;
946e9d
@@ -77,18 +76,14 @@ public class DependencyConvergence
946e9d
     {
946e9d
         try
946e9d
         {
946e9d
-            MavenProject project = (MavenProject) helper.evaluate( "${project}" );
946e9d
-            DependencyTreeBuilder dependencyTreeBuilder =
946e9d
-                (DependencyTreeBuilder) helper.getComponent( DependencyTreeBuilder.class );
946e9d
+            ProjectBuildingRequest projectBuildingRequest = new DefaultProjectBuildingRequest( (ProjectBuildingRequest) helper.evaluate( "${session.projectBuildingRequest}" ) );
946e9d
+            projectBuildingRequest.setProject( (MavenProject) helper.evaluate( "${project}" ) );
946e9d
+            DependencyGraphBuilder dependencyGraphBuilder =
946e9d
+                (DependencyGraphBuilder) helper.getComponent( DependencyGraphBuilder.class );
946e9d
             ArtifactRepository repository = (ArtifactRepository) helper.evaluate( "${localRepository}" );
946e9d
-            ArtifactFactory factory = (ArtifactFactory) helper.getComponent( ArtifactFactory.class );
946e9d
-            ArtifactMetadataSource metadataSource =
946e9d
-                (ArtifactMetadataSource) helper.getComponent( ArtifactMetadataSource.class );
946e9d
-            ArtifactCollector collector = (ArtifactCollector) helper.getComponent( ArtifactCollector.class );
946e9d
             ArtifactFilter filter = null; // we need to evaluate all scopes
946e9d
-            DependencyNode node =
946e9d
-                dependencyTreeBuilder.buildDependencyTree( project, repository, factory, metadataSource, filter,
946e9d
-                                                           collector );
946e9d
+            projectBuildingRequest.setLocalRepository( repository );
946e9d
+            DependencyNode node = dependencyGraphBuilder.buildDependencyGraph( projectBuildingRequest, filter );
946e9d
             return node;
946e9d
         }
946e9d
         catch ( ExpressionEvaluationException e )
946e9d
@@ -99,9 +94,9 @@ public class DependencyConvergence
946e9d
         {
946e9d
             throw new EnforcerRuleException( "Unable to lookup a component " + e.getLocalizedMessage(), e );
946e9d
         }
946e9d
-        catch ( DependencyTreeBuilderException e )
946e9d
+        catch ( DependencyGraphBuilderException e )
946e9d
         {
946e9d
-            throw new EnforcerRuleException( "Could not build dependency tree " + e.getLocalizedMessage(), e );
946e9d
+            throw new EnforcerRuleException( "Could not build dependency graph " + e.getLocalizedMessage(), e );
946e9d
         }
946e9d
     }
946e9d
 
946e9d
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireMavenVersion.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireMavenVersion.java
946e9d
index 46f83fd..5fab507 100644
946e9d
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireMavenVersion.java
946e9d
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireMavenVersion.java
946e9d
@@ -20,9 +20,10 @@ package org.apache.maven.plugins.enforcer;
946e9d
  */
946e9d
 
946e9d
 import org.apache.maven.artifact.versioning.ArtifactVersion;
946e9d
+import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
946e9d
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
946e9d
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
946e9d
-import org.apache.maven.execution.RuntimeInformation;
946e9d
+import org.apache.maven.rtinfo.RuntimeInformation;
946e9d
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
946e9d
 
946e9d
 /**
946e9d
@@ -46,7 +47,7 @@ public class RequireMavenVersion
946e9d
         try
946e9d
         {
946e9d
             RuntimeInformation rti = (RuntimeInformation) helper.getComponent( RuntimeInformation.class );
946e9d
-            ArtifactVersion detectedMavenVersion = rti.getApplicationVersion();
946e9d
+            ArtifactVersion detectedMavenVersion = new DefaultArtifactVersion( rti.getMavenVersion() );
946e9d
             helper.getLog().debug( "Detected Maven Version: " + detectedMavenVersion );
946e9d
             enforceVersion( helper.getLog(), "Maven", getVersion(), detectedMavenVersion );
946e9d
         }
946e9d
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireNoRepositories.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireNoRepositories.java
946e9d
index bc225b7..9bc9762 100644
946e9d
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireNoRepositories.java
946e9d
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireNoRepositories.java
946e9d
@@ -25,14 +25,13 @@ import java.util.ArrayList;
946e9d
 import java.util.Collections;
946e9d
 import java.util.List;
946e9d
 
946e9d
-import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
946e9d
-import org.apache.maven.artifact.resolver.ArtifactResolutionException;
946e9d
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
946e9d
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
946e9d
 import org.apache.maven.model.Model;
946e9d
 import org.apache.maven.model.Repository;
946e9d
 import org.apache.maven.plugins.enforcer.utils.EnforcerRuleUtils;
946e9d
 import org.apache.maven.project.MavenProject;
946e9d
+import org.apache.maven.shared.artifact.resolve.ArtifactResolverException;
946e9d
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
946e9d
 import org.codehaus.plexus.util.StringUtils;
946e9d
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
946e9d
@@ -192,11 +191,7 @@ public class RequireNoRepositories
946e9d
         {
946e9d
             throw new EnforcerRuleException( e.getLocalizedMessage() );
946e9d
         }
946e9d
-        catch ( ArtifactResolutionException e )
946e9d
-        {
946e9d
-            throw new EnforcerRuleException( e.getLocalizedMessage() );
946e9d
-        }
946e9d
-        catch ( ArtifactNotFoundException e )
946e9d
+        catch ( ArtifactResolverException e )
946e9d
         {
946e9d
             throw new EnforcerRuleException( e.getLocalizedMessage() );
946e9d
         }
946e9d
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
946e9d
index 4b1a8b4..f6754b9 100644
946e9d
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java
946e9d
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java
946e9d
@@ -40,7 +40,6 @@ import org.apache.maven.artifact.factory.ArtifactFactory;
946e9d
 import org.apache.maven.artifact.repository.ArtifactRepository;
946e9d
 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
946e9d
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
946e9d
-import org.apache.maven.artifact.resolver.ArtifactResolver;
946e9d
 import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
946e9d
 import org.apache.maven.artifact.versioning.VersionRange;
946e9d
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
946e9d
@@ -66,8 +65,12 @@ import org.apache.maven.plugin.version.PluginVersionNotFoundException;
946e9d
 import org.apache.maven.plugin.version.PluginVersionResolutionException;
946e9d
 import org.apache.maven.plugins.enforcer.utils.EnforcerRuleUtils;
946e9d
 import org.apache.maven.plugins.enforcer.utils.PluginWrapper;
946e9d
+import org.apache.maven.project.DefaultProjectBuildingRequest;
946e9d
 import org.apache.maven.project.MavenProject;
946e9d
+import org.apache.maven.project.ProjectBuildingRequest;
946e9d
 import org.apache.maven.settings.Settings;
946e9d
+import org.apache.maven.shared.artifact.resolve.ArtifactResolver;
946e9d
+import org.apache.maven.shared.artifact.resolve.ArtifactResolverException;
946e9d
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
946e9d
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
946e9d
 import org.codehaus.plexus.util.ReflectionUtils;
946e9d
@@ -169,12 +172,6 @@ public class RequirePluginVersions
946e9d
     /** The resolver. */
946e9d
     ArtifactResolver resolver;
946e9d
 
946e9d
-    /** The local. */
946e9d
-    ArtifactRepository local;
946e9d
-
946e9d
-    /** The remote repositories. */
946e9d
-    List<ArtifactRepository> remoteRepositories;
946e9d
-
946e9d
     /** The log. */
946e9d
     Log log;
946e9d
 
946e9d
@@ -223,8 +220,8 @@ public class RequirePluginVersions
946e9d
             pluginManager = (PluginManager) helper.getComponent( PluginManager.class );
946e9d
             factory = (ArtifactFactory) helper.getComponent( ArtifactFactory.class );
946e9d
             resolver = (ArtifactResolver) helper.getComponent( ArtifactResolver.class );
946e9d
-            local = (ArtifactRepository) helper.evaluate( "${localRepository}" );
946e9d
-            remoteRepositories = project.getRemoteArtifactRepositories();
946e9d
+            ProjectBuildingRequest projectBuildingRequest = new DefaultProjectBuildingRequest( (ProjectBuildingRequest) helper.evaluate( "${session.projectBuildingRequest}" ) );
946e9d
+            projectBuildingRequest.setProject( project );
946e9d
 
946e9d
             utils = new EnforcerRuleUtils( helper );
946e9d
 
946e9d
@@ -296,7 +293,7 @@ public class RequirePluginVersions
946e9d
                     {
946e9d
                         newMsg.append( ". \tThe version currently in use is " );
946e9d
 
946e9d
-                        Plugin currentPlugin = findCurrentPlugin( plugin, project );
946e9d
+                        Plugin currentPlugin = findCurrentPlugin( plugin, projectBuildingRequest );
946e9d
 
946e9d
                         if ( currentPlugin != null )
946e9d
                         {
946e9d
@@ -345,11 +342,7 @@ public class RequirePluginVersions
946e9d
         {
946e9d
             throw new EnforcerRuleException( e.getLocalizedMessage() );
946e9d
         }
946e9d
-        catch ( ArtifactResolutionException e )
946e9d
-        {
946e9d
-            throw new EnforcerRuleException( e.getLocalizedMessage() );
946e9d
-        }
946e9d
-        catch ( ArtifactNotFoundException e )
946e9d
+        catch ( ArtifactResolverException e )
946e9d
         {
946e9d
             throw new EnforcerRuleException( e.getLocalizedMessage() );
946e9d
         }
946e9d
@@ -519,12 +512,12 @@ public class RequirePluginVersions
946e9d
      * @param project project to search
946e9d
      * @return matching plugin, null if not found.
946e9d
      */
946e9d
-    protected Plugin findCurrentPlugin( Plugin plugin, MavenProject project )
946e9d
+    protected Plugin findCurrentPlugin( Plugin plugin, ProjectBuildingRequest projectBuildingRequest )
946e9d
     {
946e9d
         Plugin found = null;
946e9d
         try
946e9d
         {
946e9d
-            Model model = project.getModel();
946e9d
+            Model model = projectBuildingRequest.getProject().getModel();
946e9d
             @SuppressWarnings( "unchecked" )
946e9d
             Map<String, Plugin> plugins = model.getBuild().getPluginsAsMap();
946e9d
             found = plugins.get( plugin.getKey() );
946e9d
@@ -536,7 +529,7 @@ public class RequirePluginVersions
946e9d
 
946e9d
         if ( found == null )
946e9d
         {
946e9d
-            found = resolvePlugin( plugin, project );
946e9d
+            found = resolvePlugin( plugin, projectBuildingRequest );
946e9d
         }
946e9d
 
946e9d
         return found;
946e9d
@@ -549,25 +542,20 @@ public class RequirePluginVersions
946e9d
      * @param project the project
946e9d
      * @return the plugin
946e9d
      */
946e9d
-    protected Plugin resolvePlugin( Plugin plugin, MavenProject project )
946e9d
+    protected Plugin resolvePlugin( Plugin plugin, ProjectBuildingRequest projectBuildingRequest )
946e9d
     {
946e9d
 
946e9d
         @SuppressWarnings( "unchecked" )
946e9d
-        List<ArtifactRepository> pluginRepositories = project.getPluginArtifactRepositories();
946e9d
         Artifact artifact =
946e9d
             factory.createPluginArtifact( plugin.getGroupId(), plugin.getArtifactId(),
946e9d
                                           VersionRange.createFromVersion( "LATEST" ) );
946e9d
 
946e9d
         try
946e9d
         {
946e9d
-            this.resolver.resolve( artifact, pluginRepositories, this.local );
946e9d
+            this.resolver.resolveArtifact( projectBuildingRequest, artifact );
946e9d
             plugin.setVersion( artifact.getVersion() );
946e9d
         }
946e9d
-        catch ( ArtifactResolutionException e )
946e9d
-        {
946e9d
-            //What does this mean?
946e9d
-        }
946e9d
-        catch ( ArtifactNotFoundException e )
946e9d
+        catch ( ArtifactResolverException e )
946e9d
         {
946e9d
             //What does this mean?
946e9d
         }
946e9d
@@ -1048,13 +1036,12 @@ public class RequirePluginVersions
946e9d
      *
946e9d
      * @param project the project
946e9d
      * @return the all plugin entries wrapped in a PluginWrapper Object
946e9d
-     * @throws ArtifactResolutionException the artifact resolution exception
946e9d
-     * @throws ArtifactNotFoundException the artifact not found exception
946e9d
+     * @throws ArtifactResolverException the artifact resolution exception
946e9d
      * @throws IOException Signals that an I/O exception has occurred.
946e9d
      * @throws XmlPullParserException the xml pull parser exception
946e9d
      */
946e9d
     protected List<PluginWrapper> getAllPluginEntries( MavenProject project )
946e9d
-        throws ArtifactResolutionException, ArtifactNotFoundException, IOException, XmlPullParserException
946e9d
+        throws ArtifactResolverException, IOException, XmlPullParserException
946e9d
     {
946e9d
         List<PluginWrapper> plugins = new ArrayList<PluginWrapper>();
946e9d
         // get all the pom models
946e9d
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
946e9d
index 71210e2..5642746 100644
946e9d
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDeps.java
946e9d
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDeps.java
946e9d
@@ -26,10 +26,7 @@ import java.util.List;
946e9d
 import java.util.Map;
946e9d
 
946e9d
 import org.apache.maven.artifact.Artifact;
946e9d
-import org.apache.maven.artifact.factory.ArtifactFactory;
946e9d
-import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
946e9d
 import org.apache.maven.artifact.repository.ArtifactRepository;
946e9d
-import org.apache.maven.artifact.resolver.ArtifactCollector;
946e9d
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
946e9d
 import org.apache.maven.artifact.versioning.ArtifactVersion;
946e9d
 import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
946e9d
@@ -37,11 +34,13 @@ import org.apache.maven.artifact.versioning.OverConstrainedVersionException;
946e9d
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
946e9d
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
946e9d
 import org.apache.maven.plugin.logging.Log;
946e9d
+import org.apache.maven.project.DefaultProjectBuildingRequest;
946e9d
 import org.apache.maven.project.MavenProject;
946e9d
-import org.apache.maven.shared.dependency.tree.DependencyNode;
946e9d
-import org.apache.maven.shared.dependency.tree.DependencyTreeBuilder;
946e9d
-import org.apache.maven.shared.dependency.tree.DependencyTreeBuilderException;
946e9d
-import org.apache.maven.shared.dependency.tree.traversal.DependencyNodeVisitor;
946e9d
+import org.apache.maven.project.ProjectBuildingRequest;
946e9d
+import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
946e9d
+import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
946e9d
+import org.apache.maven.shared.dependency.graph.DependencyNode;
946e9d
+import org.apache.maven.shared.dependency.graph.traversal.DependencyNodeVisitor;
946e9d
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
946e9d
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
946e9d
 import org.codehaus.plexus.i18n.I18N;
946e9d
@@ -92,18 +91,11 @@ public class RequireUpperBoundDeps
946e9d
     {
946e9d
         try
946e9d
         {
946e9d
-            MavenProject project = (MavenProject) helper.evaluate( "${project}" );
946e9d
-            DependencyTreeBuilder dependencyTreeBuilder =
946e9d
-                (DependencyTreeBuilder) helper.getComponent( DependencyTreeBuilder.class );
946e9d
-            ArtifactRepository repository = (ArtifactRepository) helper.evaluate( "${localRepository}" );
946e9d
-            ArtifactFactory factory = (ArtifactFactory) helper.getComponent( ArtifactFactory.class );
946e9d
-            ArtifactMetadataSource metadataSource =
946e9d
-                (ArtifactMetadataSource) helper.getComponent( ArtifactMetadataSource.class );
946e9d
-            ArtifactCollector collector = (ArtifactCollector) helper.getComponent( ArtifactCollector.class );
946e9d
-            ArtifactFilter filter = null; // we need to evaluate all scopes
946e9d
-            DependencyNode node =
946e9d
-                dependencyTreeBuilder.buildDependencyTree( project, repository, factory, metadataSource, filter,
946e9d
-                                                           collector );
946e9d
+            ProjectBuildingRequest projectBuildingRequest = new DefaultProjectBuildingRequest( (ProjectBuildingRequest) helper.evaluate( "${session.projectBuildingRequest}" ) );
946e9d
+            projectBuildingRequest.setProject( (MavenProject) helper.evaluate( "${project}" ) );
946e9d
+            DependencyGraphBuilder dependencyGraphBuilder =
946e9d
+                (DependencyGraphBuilder) helper.getComponent( DependencyGraphBuilder.class );
946e9d
+            DependencyNode node = dependencyGraphBuilder.buildDependencyGraph( projectBuildingRequest, null );
946e9d
             return node;
946e9d
         }
946e9d
         catch ( ExpressionEvaluationException e )
946e9d
@@ -114,7 +106,7 @@ public class RequireUpperBoundDeps
946e9d
         {
946e9d
             throw new EnforcerRuleException( "Unable to lookup a component " + e.getLocalizedMessage(), e );
946e9d
         }
946e9d
-        catch ( DependencyTreeBuilderException e )
946e9d
+        catch ( DependencyGraphBuilderException e )
946e9d
         {
946e9d
             throw new EnforcerRuleException( "Could not build dependency tree " + e.getLocalizedMessage(), e );
946e9d
         }
946e9d
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
946e9d
index 2ec4ac2..ece772b 100644
946e9d
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/DependencyVersionMap.java
946e9d
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/DependencyVersionMap.java
946e9d
@@ -26,8 +26,8 @@ import java.util.Map;
946e9d
 
946e9d
 import org.apache.maven.artifact.Artifact;
946e9d
 import org.apache.maven.plugin.logging.Log;
946e9d
-import org.apache.maven.shared.dependency.tree.DependencyNode;
946e9d
-import org.apache.maven.shared.dependency.tree.traversal.DependencyNodeVisitor;
946e9d
+import org.apache.maven.shared.dependency.graph.DependencyNode;
946e9d
+import org.apache.maven.shared.dependency.graph.traversal.DependencyNodeVisitor;
946e9d
 
946e9d
 /**
946e9d
  * @author Brian Fox
946e9d
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
946e9d
index 386b629..cb83e92 100644
946e9d
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/EnforcerRuleUtils.java
946e9d
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/EnforcerRuleUtils.java
946e9d
@@ -28,9 +28,6 @@ import java.util.List;
946e9d
 import org.apache.maven.artifact.Artifact;
946e9d
 import org.apache.maven.artifact.factory.ArtifactFactory;
946e9d
 import org.apache.maven.artifact.repository.ArtifactRepository;
946e9d
-import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
946e9d
-import org.apache.maven.artifact.resolver.ArtifactResolutionException;
946e9d
-import org.apache.maven.artifact.resolver.ArtifactResolver;
946e9d
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
946e9d
 import org.apache.maven.model.Model;
946e9d
 import org.apache.maven.model.Parent;
946e9d
@@ -38,7 +35,11 @@ import org.apache.maven.model.Plugin;
946e9d
 import org.apache.maven.model.ReportPlugin;
946e9d
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
946e9d
 import org.apache.maven.plugin.logging.Log;
946e9d
+import org.apache.maven.project.DefaultProjectBuildingRequest;
946e9d
 import org.apache.maven.project.MavenProject;
946e9d
+import org.apache.maven.project.ProjectBuildingRequest;
946e9d
+import org.apache.maven.shared.artifact.resolve.ArtifactResolver;
946e9d
+import org.apache.maven.shared.artifact.resolve.ArtifactResolverException;
946e9d
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
946e9d
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
946e9d
 import org.codehaus.plexus.util.ReaderFactory;
946e9d
@@ -60,45 +61,16 @@ public class EnforcerRuleUtils
946e9d
     /** The resolver. */
946e9d
     ArtifactResolver resolver;
946e9d
 
946e9d
-    /** The local. */
946e9d
-    ArtifactRepository local;
946e9d
-
946e9d
-    /** The remote repositories. */
946e9d
-    List<ArtifactRepository> remoteRepositories;
946e9d
-
946e9d
     /** The log. */
946e9d
     Log log;
946e9d
 
946e9d
-    /** The project. */
946e9d
-    MavenProject project;
946e9d
+    ProjectBuildingRequest projectBuildingRequest;
946e9d
 
946e9d
     private EnforcerRuleHelper helper;
946e9d
 
946e9d
     /**
946e9d
      * Instantiates a new enforcer rule utils.
946e9d
      *
946e9d
-     * @param theFactory the the factory
946e9d
-     * @param theResolver the the resolver
946e9d
-     * @param theLocal the the local
946e9d
-     * @param theRemoteRepositories the the remote repositories
946e9d
-     * @param project the project
946e9d
-     * @param theLog the the log
946e9d
-     */
946e9d
-    public EnforcerRuleUtils( ArtifactFactory theFactory, ArtifactResolver theResolver, ArtifactRepository theLocal,
946e9d
-                              List<ArtifactRepository> theRemoteRepositories, MavenProject project, Log theLog )
946e9d
-    {
946e9d
-        super();
946e9d
-        this.factory = theFactory;
946e9d
-        this.resolver = theResolver;
946e9d
-        this.local = theLocal;
946e9d
-        this.remoteRepositories = theRemoteRepositories;
946e9d
-        this.log = theLog;
946e9d
-        this.project = project;
946e9d
-    }
946e9d
-
946e9d
-    /**
946e9d
-     * Instantiates a new enforcer rule utils.
946e9d
-     *
946e9d
      * @param helper the helper
946e9d
      */
946e9d
     @SuppressWarnings( "unchecked" )
946e9d
@@ -112,9 +84,8 @@ public class EnforcerRuleUtils
946e9d
         {
946e9d
             factory = (ArtifactFactory) helper.getComponent( ArtifactFactory.class );
946e9d
             resolver = (ArtifactResolver) helper.getComponent( ArtifactResolver.class );
946e9d
-            local = (ArtifactRepository) helper.evaluate( "${localRepository}" );
946e9d
-            project = (MavenProject) helper.evaluate( "${project}" );
946e9d
-            remoteRepositories = project.getRemoteArtifactRepositories();
946e9d
+            projectBuildingRequest = new DefaultProjectBuildingRequest( (ProjectBuildingRequest) helper.evaluate( "${session.projectBuildingRequest}" ) );
946e9d
+            projectBuildingRequest.setProject( (MavenProject) helper.evaluate( "${project}" ) );
946e9d
         }
946e9d
         catch ( ComponentLookupException e )
946e9d
         {
946e9d
@@ -163,13 +134,12 @@ public class EnforcerRuleUtils
946e9d
      * @param version the version
946e9d
      * @param pom the pom
946e9d
      * @return the pom model
946e9d
-     * @throws ArtifactResolutionException the artifact resolution exception
946e9d
-     * @throws ArtifactNotFoundException the artifact not found exception
946e9d
+     * @throws ArtifactResolverException the artifact resolution exception
946e9d
      * @throws XmlPullParserException the xml pull parser exception
946e9d
      * @throws IOException Signals that an I/O exception has occurred.
946e9d
      */
946e9d
     private Model getPomModel( String groupId, String artifactId, String version, File pom )
946e9d
-        throws ArtifactResolutionException, ArtifactNotFoundException, IOException, XmlPullParserException
946e9d
+        throws ArtifactResolverException, IOException, XmlPullParserException
946e9d
     {
946e9d
         Model model = null;
946e9d
 
946e9d
@@ -206,7 +176,7 @@ public class EnforcerRuleUtils
946e9d
         if ( !found )
946e9d
         {
946e9d
             Artifact pomArtifact = factory.createArtifact( groupId, artifactId, version, null, "pom" );
946e9d
-            resolver.resolve( pomArtifact, remoteRepositories, local );
946e9d
+            resolver.resolveArtifact( projectBuildingRequest, pomArtifact );
946e9d
             model = readModel( pomArtifact.getFile() );
946e9d
         }
946e9d
 
946e9d
@@ -221,13 +191,12 @@ public class EnforcerRuleUtils
946e9d
      * @param version the version
946e9d
      * @param pom the pom
946e9d
      * @return the models recursively
946e9d
-     * @throws ArtifactResolutionException the artifact resolution exception
946e9d
-     * @throws ArtifactNotFoundException the artifact not found exception
946e9d
+     * @throws ArtifactResolverException the artifact resolution exception
946e9d
      * @throws IOException Signals that an I/O exception has occurred.
946e9d
      * @throws XmlPullParserException the xml pull parser exception
946e9d
      */
946e9d
     public List<Model> getModelsRecursively( String groupId, String artifactId, String version, File pom )
946e9d
-        throws ArtifactResolutionException, ArtifactNotFoundException, IOException, XmlPullParserException
946e9d
+        throws ArtifactResolverException, IOException, XmlPullParserException
946e9d
     {
946e9d
         List<Model> models = null;
946e9d
         Model model = getPomModel( groupId, artifactId, version, pom );
946e9d
diff --git a/maven-enforcer-plugin/pom.xml b/maven-enforcer-plugin/pom.xml
946e9d
index 7dbab66..1448df3 100644
946e9d
--- a/maven-enforcer-plugin/pom.xml
946e9d
+++ b/maven-enforcer-plugin/pom.xml
946e9d
@@ -49,10 +49,6 @@
946e9d
     </dependency>
946e9d
     <dependency>
946e9d
       <groupId>org.apache.maven</groupId>
946e9d
-      <artifactId>maven-project</artifactId>
946e9d
-    </dependency>
946e9d
-    <dependency>
946e9d
-      <groupId>org.apache.maven</groupId>
946e9d
       <artifactId>maven-core</artifactId>
946e9d
     </dependency>
946e9d
     <dependency>
946e9d
diff --git a/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/DisplayInfoMojo.java b/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/DisplayInfoMojo.java
946e9d
index 8133809..f7b7fc2 100644
946e9d
--- a/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/DisplayInfoMojo.java
946e9d
+++ b/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/DisplayInfoMojo.java
946e9d
@@ -21,7 +21,6 @@ package org.apache.maven.plugins.enforcer;
946e9d
 
946e9d
 import org.apache.commons.lang.SystemUtils;
946e9d
 import org.apache.maven.execution.MavenSession;
946e9d
-import org.apache.maven.execution.RuntimeInformation;
946e9d
 import org.apache.maven.plugin.AbstractMojo;
946e9d
 import org.apache.maven.plugin.MojoExecution;
946e9d
 import org.apache.maven.plugin.MojoExecutionException;
946e9d
@@ -30,6 +29,7 @@ import org.apache.maven.plugins.annotations.Mojo;
946e9d
 import org.apache.maven.plugins.annotations.Parameter;
946e9d
 import org.apache.maven.project.MavenProject;
946e9d
 import org.apache.maven.project.path.PathTranslator;
946e9d
+import org.apache.maven.rtinfo.RuntimeInformation;
946e9d
 import org.codehaus.plexus.PlexusConstants;
946e9d
 import org.codehaus.plexus.PlexusContainer;
946e9d
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
946e9d
@@ -96,7 +96,7 @@ public class DisplayInfoMojo
946e9d
             DefaultEnforcementRuleHelper helper = new DefaultEnforcementRuleHelper( session, evaluator, getLog(),
946e9d
                                                                                     container );
946e9d
             RuntimeInformation rti = (RuntimeInformation) helper.getComponent( RuntimeInformation.class );
946e9d
-            getLog().info( "Maven Version: " + rti.getApplicationVersion() );
946e9d
+            getLog().info( "Maven Version: " + rti.getMavenVersion() );
946e9d
             getLog().info( "JDK Version: " + SystemUtils.JAVA_VERSION + " normalized as: "
946e9d
                                + RequireJavaVersion.normalizeJDKVersion( SystemUtils.JAVA_VERSION_TRIMMED ) );
946e9d
             RequireOS os = new RequireOS();
946e9d
diff --git a/pom.xml b/pom.xml
946e9d
index 423b7f7..a33d992 100644
946e9d
--- a/pom.xml
946e9d
+++ b/pom.xml
946e9d
@@ -37,7 +37,7 @@
946e9d
   <inceptionYear>2007</inceptionYear>
946e9d
 
946e9d
   <prerequisites>
946e9d
-    <maven>2.2.1</maven>
946e9d
+    <maven>3.3.3</maven>
946e9d
   </prerequisites>
946e9d
 
946e9d
   <modules>
946e9d
@@ -66,7 +66,7 @@
946e9d
     </site>
946e9d
   </distributionManagement>
946e9d
   <properties>
946e9d
-    <maven.version>2.2.1</maven.version>
946e9d
+    <maven.version>3.3.3</maven.version>
946e9d
     <mavenPluginPluginVersion>3.3</mavenPluginPluginVersion>
946e9d
     <maven.site.path>enforcer-archives/enforcer-LATEST</maven.site.path>
946e9d
   </properties>
946e9d
@@ -102,18 +102,23 @@
946e9d
       </dependency>
946e9d
       <dependency>
946e9d
         <groupId>org.apache.maven</groupId>
946e9d
-        <artifactId>maven-project</artifactId>
946e9d
+        <artifactId>maven-core</artifactId>
946e9d
         <version>${maven.version}</version>
946e9d
       </dependency>
946e9d
       <dependency>
946e9d
         <groupId>org.apache.maven</groupId>
946e9d
-        <artifactId>maven-core</artifactId>
946e9d
+        <artifactId>maven-compat</artifactId>
946e9d
         <version>${maven.version}</version>
946e9d
       </dependency>
946e9d
       <dependency>
946e9d
         <groupId>org.apache.maven.shared</groupId>
946e9d
         <artifactId>maven-common-artifact-filters</artifactId>
946e9d
-        <version>1.4</version>
946e9d
+        <version>3.0-SNAPSHOT</version>
946e9d
+      </dependency>
946e9d
+      <dependency>
946e9d
+        <groupId>org.apache.maven.shared</groupId>
946e9d
+        <artifactId>maven-artifact-transfer</artifactId>
946e9d
+        <version>3.0-SNAPSHOT</version>
946e9d
       </dependency>
946e9d
       <dependency>
946e9d
         <groupId>org.codehaus.plexus</groupId>
946e9d
@@ -144,12 +149,12 @@
946e9d
       <dependency>
946e9d
         <groupId>org.apache.maven.plugin-testing</groupId>
946e9d
         <artifactId>maven-plugin-testing-harness</artifactId>
946e9d
-        <version>1.3</version>
946e9d
+        <version>3.3.0</version>
946e9d
       </dependency>
946e9d
       <dependency>
946e9d
         <groupId>org.apache.maven.shared</groupId>
946e9d
         <artifactId>maven-dependency-tree</artifactId>
946e9d
-        <version>2.2</version>
946e9d
+        <version>3.0</version>
946e9d
       </dependency>
946e9d
     </dependencies>
946e9d
   </dependencyManagement>
946e9d
-- 
946e9d
2.4.3
946e9d