[MENFORCER-277] Upgrade maven-dependency-tree to 3.x
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
index 8a8a331..8a9735d 100644
--- 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
@@ -22,9 +22,12 @@
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
+import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.plugins.enforcer.utils.ArtifactUtils;
+import org.apache.maven.project.DefaultProjectBuildingRequest;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.ProjectBuildingRequest;
 import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
 import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
 import org.apache.maven.shared.dependency.graph.DependencyNode;
@@ -32,7 +35,6 @@
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 
 import java.util.HashSet;
-import java.util.List;
 import java.util.Set;
 
 /**
@@ -49,18 +51,11 @@
 
     private transient DependencyGraphBuilder graphBuilder;
 
-    /**
-     * Contains the full list of projects in the reactor.
-     */
-    private transient List<MavenProject> reactorProjects;
-
     @Override
     public void execute( EnforcerRuleHelper helper )
         throws EnforcerRuleException
     {
-
-        // get the project
-        MavenProject project = null;
+        MavenProject project;
         try
         {
             project = (MavenProject) helper.evaluate( "${project}" );
@@ -70,10 +65,10 @@
             throw new EnforcerRuleException( "Unable to retrieve the MavenProject: ", eee );
         }
 
-        // get the reactor projects
+        MavenSession session;
         try
         {
-            reactorProjects = (List<MavenProject>) helper.evaluate( "${reactorProjects}" );
+            session = (MavenSession) helper.evaluate( "${session}" );
         }
         catch ( ExpressionEvaluationException eee )
         {
@@ -86,21 +81,15 @@
         }
         catch ( ComponentLookupException e )
         {
-            // real cause is probably that one of the Maven3 graph builder could not be initiated and fails with a
-            // ClassNotFoundException
-            try
-            {
-                graphBuilder =
-                    (DependencyGraphBuilder) helper.getComponent( DependencyGraphBuilder.class.getName(), "maven2" );
-            }
-            catch ( ComponentLookupException e1 )
-            {
-                throw new EnforcerRuleException( "Unable to lookup DependencyGraphBuilder: ", e );
-            }
+            throw new EnforcerRuleException( "Unable to lookup DependencyGraphBuilder: ", e );
         }
+        
+        ProjectBuildingRequest buildingRequest =
+            new DefaultProjectBuildingRequest( session.getProjectBuildingRequest() );
+        buildingRequest.setProject( project );
 
         // get the correct list of dependencies
-        Set<Artifact> dependencies = getDependenciesToCheck( project );
+        Set<Artifact> dependencies = getDependenciesToCheck( buildingRequest );
 
         // look for banned dependencies
         Set<Artifact> foundExcludes = checkDependencies( dependencies, helper.getLog() );
@@ -131,12 +120,12 @@
         return "Found Banned Dependency: " + artifact.getId() + System.lineSeparator();
     }
 
-    protected Set<Artifact> getDependenciesToCheck( MavenProject project )
+    protected Set<Artifact> getDependenciesToCheck( ProjectBuildingRequest buildingRequest )
     {
         Set<Artifact> dependencies = null;
         try
         {
-            DependencyNode node = graphBuilder.buildDependencyGraph( project, null, reactorProjects );
+            DependencyNode node = graphBuilder.buildDependencyGraph( buildingRequest, null );
             if ( searchTransitive )
             {
                 dependencies = ArtifactUtils.getAllDescendants( node );
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
index d307fda..e7ef71b 100644
--- 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
@@ -26,8 +26,11 @@
 import org.apache.maven.enforcer.rule.api.EnforcerRule;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
+import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugins.enforcer.utils.ArtifactMatcher;
+import org.apache.maven.project.DefaultProjectBuildingRequest;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.ProjectBuildingRequest;
 import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
 import org.apache.maven.shared.dependency.graph.DependencyNode;
 import org.apache.maven.shared.dependency.graph.internal.DefaultDependencyGraphBuilder;
@@ -158,8 +161,13 @@
         try
         {
             MavenProject project = (MavenProject) helper.evaluate( "${project}" );
-            List<MavenProject> reactorProjects = (List<MavenProject>) helper.evaluate( "${reactorProjects}" );
-            rootNode = createDependencyGraphBuilder().buildDependencyGraph( project, null, reactorProjects );
+            MavenSession session = (MavenSession) helper.evaluate( "${session}" );
+            
+            ProjectBuildingRequest buildingRequest =
+                new DefaultProjectBuildingRequest( session.getProjectBuildingRequest() );
+            buildingRequest.setProject( project );
+            
+            rootNode = createDependencyGraphBuilder().buildDependencyGraph( buildingRequest, null );
         }
         catch ( Exception e )
         {
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
index 03201fd..9e0a7e8 100644
--- 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
@@ -22,7 +22,7 @@
 import java.util.Set;

 

 import org.apache.maven.artifact.Artifact;

-import org.apache.maven.project.MavenProject;

+import org.apache.maven.project.ProjectBuildingRequest;

 

 /**

  * This rule checks that lists of plugins are not included.

@@ -33,9 +33,9 @@
     extends BannedDependencies

 {

     @Override

-    protected Set<Artifact> getDependenciesToCheck( MavenProject project )

+    protected Set<Artifact> getDependenciesToCheck( ProjectBuildingRequest buildingRequest )

     {

-        return project.getPluginArtifacts();

+        return buildingRequest.getProject().getPluginArtifacts();

     }

 

     @Override

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
index 1632ae0..2b9a46a 100644
--- 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
@@ -23,20 +23,20 @@
 import java.util.Collections;
 import java.util.List;
 
-import org.apache.maven.artifact.factory.ArtifactFactory;
-import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.resolver.ArtifactCollector;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.enforcer.rule.api.EnforcerRule;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
+import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.plugins.enforcer.utils.DependencyVersionMap;
+import org.apache.maven.project.DefaultProjectBuildingRequest;
 import org.apache.maven.project.MavenProject;
-import org.apache.maven.shared.dependency.tree.DependencyNode;
-import org.apache.maven.shared.dependency.tree.DependencyTreeBuilder;
-import org.apache.maven.shared.dependency.tree.DependencyTreeBuilderException;
+import org.apache.maven.project.ProjectBuildingRequest;
+import org.apache.maven.shared.dependency.graph.DependencyCollectorBuilder;
+import org.apache.maven.shared.dependency.graph.DependencyCollectorBuilderException;
+import org.apache.maven.shared.dependency.graph.DependencyNode;
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 
@@ -73,21 +73,24 @@
         try
         {
             MavenProject project = (MavenProject) helper.evaluate( "${project}" );
-            DependencyTreeBuilder dependencyTreeBuilder = helper.getComponent( DependencyTreeBuilder.class );
+            MavenSession session = (MavenSession) helper.evaluate( "${session}" );
+            DependencyCollectorBuilder dependencyCollectorBuilder =
+                helper.getComponent( DependencyCollectorBuilder.class );
             ArtifactRepository repository = (ArtifactRepository) helper.evaluate( "${localRepository}" );
-            ArtifactFactory factory = helper.getComponent( ArtifactFactory.class );
-            ArtifactMetadataSource metadataSource = helper.getComponent( ArtifactMetadataSource.class );
-            ArtifactCollector collector = helper.getComponent( ArtifactCollector.class );
+
+            ProjectBuildingRequest buildingRequest =
+                new DefaultProjectBuildingRequest( session.getProjectBuildingRequest() );
+            buildingRequest.setProject( project );
+            buildingRequest.setLocalRepository( repository );
             ArtifactFilter filter = null; // we need to evaluate all scopes
-            DependencyNode node = dependencyTreeBuilder.buildDependencyTree( project, repository, factory,
-                                                                             metadataSource, filter, collector );
-            return node;
+
+            return dependencyCollectorBuilder.collectDependencyGraph( buildingRequest, filter );
         }
         catch ( ExpressionEvaluationException | ComponentLookupException e )
         {
             throw new EnforcerRuleException( "Unable to lookup a component " + e.getLocalizedMessage(), e );
         }
-        catch ( DependencyTreeBuilderException e )
+        catch ( DependencyCollectorBuilderException e )
         {
             throw new EnforcerRuleException( "Could not build dependency tree " + e.getLocalizedMessage(), e );
         }
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
index 176bf7c..4abfb91 100644
--- 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
@@ -36,12 +36,15 @@
 import org.apache.maven.artifact.versioning.OverConstrainedVersionException;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
+import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.project.DefaultProjectBuildingRequest;
 import org.apache.maven.project.MavenProject;
-import org.apache.maven.shared.dependency.tree.DependencyNode;
-import org.apache.maven.shared.dependency.tree.DependencyTreeBuilder;
-import org.apache.maven.shared.dependency.tree.DependencyTreeBuilderException;
-import org.apache.maven.shared.dependency.tree.traversal.DependencyNodeVisitor;
+import org.apache.maven.project.ProjectBuildingRequest;
+import org.apache.maven.shared.dependency.graph.DependencyCollectorBuilder;
+import org.apache.maven.shared.dependency.graph.DependencyCollectorBuilderException;
+import org.apache.maven.shared.dependency.graph.DependencyNode;
+import org.apache.maven.shared.dependency.graph.traversal.DependencyNodeVisitor;
 import org.apache.maven.shared.utils.logging.MessageUtils;
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
@@ -124,16 +127,17 @@
         try
         {
             MavenProject project = (MavenProject) helper.evaluate( "${project}" );
-            DependencyTreeBuilder dependencyTreeBuilder = helper.getComponent( DependencyTreeBuilder.class );
+            MavenSession session = (MavenSession) helper.evaluate( "${session}" );
+            DependencyCollectorBuilder dependencyCollectorBuilder =
+                helper.getComponent( DependencyCollectorBuilder.class );
             ArtifactRepository repository = (ArtifactRepository) helper.evaluate( "${localRepository}" );
-            ArtifactFactory factory = helper.getComponent( ArtifactFactory.class );
-            ArtifactMetadataSource metadataSource = helper.getComponent( ArtifactMetadataSource.class );
-            ArtifactCollector collector = helper.getComponent( ArtifactCollector.class );
+            
+            ProjectBuildingRequest buildingRequest =
+                new DefaultProjectBuildingRequest( session.getProjectBuildingRequest() );
+            buildingRequest.setProject( project );
+            buildingRequest.setLocalRepository( repository );
             ArtifactFilter filter = null; // we need to evaluate all scopes
-            DependencyNode node =
-                dependencyTreeBuilder.buildDependencyTree( project, repository, factory, metadataSource, filter,
-                                                           collector );
-            return node;
+            return dependencyCollectorBuilder.collectDependencyGraph( buildingRequest, filter );
         }
         catch ( ExpressionEvaluationException e )
         {
@@ -143,7 +147,7 @@
         {
             throw new EnforcerRuleException( "Unable to lookup a component " + e.getLocalizedMessage(), e );
         }
-        catch ( DependencyTreeBuilderException e )
+        catch ( DependencyCollectorBuilderException e )
         {
             throw new EnforcerRuleException( "Could not build dependency tree " + e.getLocalizedMessage(), e );
         }
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
index b280760..fa65546 100644
--- 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
@@ -26,8 +26,8 @@
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.plugin.logging.Log;
-import org.apache.maven.shared.dependency.tree.DependencyNode;
-import org.apache.maven.shared.dependency.tree.traversal.DependencyNodeVisitor;
+import org.apache.maven.shared.dependency.graph.DependencyNode;
+import org.apache.maven.shared.dependency.graph.traversal.DependencyNodeVisitor;
 
 /**
  * @author Brian Fox
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/BannedDependenciesTestSetup.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/BannedDependenciesTestSetup.java
index 6d13ce3..bc80fc4 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/BannedDependenciesTestSetup.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/BannedDependenciesTestSetup.java
@@ -29,6 +29,7 @@
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
 import org.apache.maven.plugin.testing.ArtifactStubFactory;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.ProjectBuildingRequest;
 
 public class BannedDependenciesTestSetup
 {
@@ -93,8 +94,10 @@
         BannedDependencies rule = new BannedDependencies()
         {
             @Override
-            protected Set<Artifact> getDependenciesToCheck( MavenProject project )
+            protected Set<Artifact> getDependenciesToCheck( ProjectBuildingRequest buildingRequest )
             {
+                MavenProject project = buildingRequest.getProject();
+
                 // the integration with dependencyGraphTree is verified with the integration tests
                 // for unit-testing
                 return isSearchTransitive() ? project.getArtifacts() : project.getDependencyArtifacts();
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/EnforcerTestUtils.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/EnforcerTestUtils.java
index 1f8637b..006a729 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/EnforcerTestUtils.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/EnforcerTestUtils.java
@@ -19,18 +19,16 @@
  * under the License.
  */
 
+import static org.mockito.Mockito.any;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.Properties;
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.DefaultArtifact;
-import org.apache.maven.artifact.factory.ArtifactFactory;
-import org.apache.maven.artifact.handler.ArtifactHandler;
-import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.resolver.ArtifactCollector;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
 import org.apache.maven.execution.MavenExecutionRequest;
@@ -42,10 +40,10 @@
 import org.apache.maven.plugin.logging.SystemStreamLog;
 import org.apache.maven.plugins.enforcer.utils.MockEnforcerExpressionEvaluator;
 import org.apache.maven.project.MavenProject;
-import org.apache.maven.shared.dependency.tree.DefaultDependencyTreeBuilder;
-import org.apache.maven.shared.dependency.tree.DependencyNode;
-import org.apache.maven.shared.dependency.tree.DependencyTreeBuilder;
-import org.apache.maven.shared.dependency.tree.DependencyTreeBuilderException;
+import org.apache.maven.project.ProjectBuildingRequest;
+import org.apache.maven.shared.dependency.graph.DependencyCollectorBuilder;
+import org.apache.maven.shared.dependency.graph.DependencyCollectorBuilderException;
+import org.apache.maven.shared.dependency.graph.internal.DefaultDependencyNode;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
@@ -68,6 +66,9 @@
         PlexusContainer mock = mock( PlexusContainer.class );
 
         MavenExecutionRequest mer = mock( MavenExecutionRequest.class );
+        ProjectBuildingRequest buildingRequest = mock( ProjectBuildingRequest.class );
+        when( buildingRequest.setRepositorySession( any() )).thenReturn( buildingRequest );
+        when( mer.getProjectBuildingRequest() ).thenReturn( buildingRequest );
 
         Properties systemProperties = new Properties();
         systemProperties.put( "maven.version", "3.0" );
@@ -137,25 +138,26 @@
                                                  "classifier", null );
         Artifact v1 = new DefaultArtifact( "groupId", "artifact", "1.0.0", "compile", "jar", "", null );
         Artifact v2 = new DefaultArtifact( "groupId", "artifact", "2.0.0", "compile", "jar", "", null );
-        final DependencyNode node = new DependencyNode( artifact );
-        DependencyNode child1 = new DependencyNode( v1 );
-        DependencyNode child2 = new DependencyNode( v2 );
-        node.addChild( child1 );
-        node.addChild( child2 );
+        final DefaultDependencyNode node = new DefaultDependencyNode( artifact );
+        DefaultDependencyNode child1 = new DefaultDependencyNode( node, v1, null, null, null );
+        child1.setChildren( Collections.emptyList() );
+        DefaultDependencyNode child2 = new DefaultDependencyNode( node, v2, null, null, null  );
+        child2.setChildren( Collections.emptyList() );
+        node.setChildren( Arrays.asList( child1, child2 ) );
         
-        DependencyTreeBuilder dependencyTreeBuilder = new DefaultDependencyTreeBuilder() {
+        DependencyCollectorBuilder dependencyCollectorBuilder = new DependencyCollectorBuilder() {
             @Override
-            public DependencyNode buildDependencyTree( MavenProject project, ArtifactRepository repository,
-                   ArtifactFactory factory, ArtifactMetadataSource metadataSource,
-                   ArtifactFilter filter, ArtifactCollector collector )
-                throws DependencyTreeBuilderException {
-                 return node;
+            public org.apache.maven.shared.dependency.graph.DependencyNode collectDependencyGraph( ProjectBuildingRequest buildingRequest,
+                                                                                                   ArtifactFilter filter )
+                throws DependencyCollectorBuilderException
+            {
+                return node;
             }
         };
 
         try
         {
-            Mockito.when( container.lookup( DependencyTreeBuilder.class ) ).thenReturn( dependencyTreeBuilder  );
+            Mockito.when( container.lookup( DependencyCollectorBuilder.class ) ).thenReturn( dependencyCollectorBuilder  );
         }
         catch ( ComponentLookupException e )
         {
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDepsTest.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDepsTest.java
index 621373f..4da067a 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDepsTest.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDepsTest.java
@@ -29,6 +29,9 @@
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
 import org.apache.maven.plugin.testing.ArtifactStubFactory;
 
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.containsString;
+
 public class RequireUpperBoundDepsTest
 {
 
@@ -47,7 +50,7 @@
           Assert.fail("Did not detect upper bounds error");
         }
         catch ( EnforcerRuleException ex ) {
-            Assert.assertTrue( ex.getMessage(), ex.getMessage().contains( "groupId:artifactId:version:classifier" ) );
+            assertThat( ex.getMessage(), containsString( "groupId:artifactId:version:classifier" ) );
         }
     }
 
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseDeps.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseDeps.java
index 858e60f..05d05f4 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseDeps.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireReleaseDeps.java
@@ -29,6 +29,7 @@
 import org.apache.maven.plugin.testing.ArtifactStubFactory;
 import org.apache.maven.plugins.enforcer.utils.EnforcerRuleUtilsHelper;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.ProjectBuildingRequest;
 
 /**
  * The Class TestNoSnapshots.
@@ -96,8 +97,12 @@
     {
         RequireReleaseDeps rule = new RequireReleaseDeps()
         {
-            protected Set<Artifact> getDependenciesToCheck( MavenProject project )
+            
+            @Override
+            protected Set<Artifact> getDependenciesToCheck( ProjectBuildingRequest buildingRequest )
             {
+                MavenProject project = buildingRequest.getProject();
+
                 // the integration with dependencyGraphTree is verified with the integration tests
                 // for unit-testing 
                 return isSearchTransitive() ? project.getArtifacts() : project.getDependencyArtifacts();
diff --git a/maven-enforcer-plugin/src/test/java/org/apache/maven/plugins/enforcer/TestEnforceMojo.java b/maven-enforcer-plugin/src/test/java/org/apache/maven/plugins/enforcer/TestEnforceMojo.java
index c7677d3..ff367ad 100644
--- a/maven-enforcer-plugin/src/test/java/org/apache/maven/plugins/enforcer/TestEnforceMojo.java
+++ b/maven-enforcer-plugin/src/test/java/org/apache/maven/plugins/enforcer/TestEnforceMojo.java
@@ -39,7 +39,7 @@
  * 
  * @author <a href="mailto:brianf@apache.org">Brian Fox</a>
  */
-@RunWith( MockitoJUnitRunner.class )
+@RunWith( MockitoJUnitRunner.Silent.class )
 public class TestEnforceMojo
 {
 
diff --git a/pom.xml b/pom.xml
index 7f178ea..26ce79f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -162,7 +162,7 @@
       <dependency>
         <groupId>org.apache.maven.shared</groupId>
         <artifactId>maven-dependency-tree</artifactId>
-        <version>2.2</version>
+        <version>3.1.0</version>
       </dependency>
       <dependency>
         <groupId>org.apache.maven.resolver</groupId>