This is an automated email from the ASF dual-hosted git repository.

slachiewicz pushed a commit to branch maven-31
in repository https://gitbox.apache.org/repos/asf/maven-artifact-transfer.git

commit f11e8c2b60e5b6668a504f9be40d46a41a3f1e5e
Author: Sylwester Lachiewicz <slachiew...@apache.org>
AuthorDate: Thu Nov 26 01:04:49 2020 +0100

    Drop support for Maven 3.0. Require 3.1.1
---
 pom.xml                                            |  64 ++---
 .../deploy/internal/DefaultArtifactDeployer.java   |  40 +---
 .../deploy/internal/Maven30ArtifactDeployer.java   | 150 ------------
 .../install/internal/DefaultArtifactInstaller.java |  40 +---
 .../install/internal/Maven30ArtifactInstaller.java | 105 --------
 .../resolve/internal/DefaultArtifactResolver.java  |  50 +---
 .../resolve/internal/Maven30ArtifactResolver.java  | 107 ---------
 .../resolve/internal/Maven30ArtifactResult.java    |  57 -----
 .../internal/DefaultDependencyCollector.java       |  52 +---
 .../internal/Maven30ArtifactRepositoryAdapter.java | 265 --------------------
 .../collection/internal/Maven30CollectResult.java  |  68 ------
 .../internal/Maven30DependencyCollector.java       | 167 -------------
 .../internal/Maven30DependencyNodeAdapter.java     | 163 -------------
 .../internal/Maven31ArtifactRepositoryAdapter.java |  29 +++
 .../internal/DefaultDependencyCollector.java       |  52 +---
 .../internal/Maven30ArtifactRepositoryAdapter.java | 266 ---------------------
 .../collect/internal/Maven30CollectorResult.java   |  85 -------
 .../internal/Maven30DependencyCollector.java       | 160 -------------
 .../internal/Maven30DependencyNodeAdapter.java     | 163 -------------
 .../internal/Maven31ArtifactRepositoryAdapter.java |  29 +++
 .../internal/DefaultDependencyResolver.java        |  52 +---
 .../resolve/internal/Maven30ArtifactResult.java    |  57 -----
 .../internal/Maven30DependencyResolver.java        | 247 -------------------
 .../Maven30DependencyResolverException.java        |  61 -----
 .../metadata/internal/Maven30MetadataBridge.java   | 107 ---------
 .../internal/DefaultRepositoryManager.java         |  61 +----
 .../internal/Maven302RepositoryManager.java        |  55 -----
 .../internal/Maven30RepositoryManager.java         | 172 -------------
 .../internal/Maven31RepositoryManager.java         |   7 +-
 src/site/apt/index.apt.vm                          |   2 +-
 .../internal/DefaultArtifactDeployerTest.java      |   9 +-
 .../internal/Maven30ArtifactInstallerTest.java     |  77 ------
 .../internal/Maven30RepositoryManagerTest.java     |  83 -------
 33 files changed, 137 insertions(+), 2965 deletions(-)

diff --git a/pom.xml b/pom.xml
index ef8833e..7e1dbc9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,7 +24,7 @@
     <groupId>org.apache.maven.shared</groupId>
     <artifactId>maven-shared-components</artifactId>
     <version>34</version>
-    
<relativePath>../../pom/maven/maven-shared-components/pom.xml</relativePath>
+    <relativePath />
   </parent>
 
   <artifactId>maven-artifact-transfer</artifactId>
@@ -165,12 +165,12 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-core</artifactId>
-      <version>3.0</version>
+      <version>3.1.1</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-artifact</artifactId>
-      <version>3.0</version>
+      <version>3.1.1</version>
     </dependency>
 
     <dependency>
@@ -189,45 +189,25 @@
       <version>3.3.0</version>
     </dependency>
 
-    <!-- Maven 3.0.x -->
-    <dependency>
-      <groupId>org.sonatype.aether</groupId>
-      <artifactId>aether-api</artifactId>
-      <version>1.7</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.sonatype.aether</groupId>
-      <artifactId>aether-util</artifactId>
-      <version>1.7</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.sonatype.aether</groupId>
-      <artifactId>aether-impl</artifactId>
-      <version>1.7</version>
-      <scope>test</scope>
-    </dependency>
-
-    <!-- Maven 3.1.x and above -->
-    <dependency>
-      <groupId>org.eclipse.aether</groupId>
-      <artifactId>aether-api</artifactId>
-      <version>0.9.0.M2</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.eclipse.aether</groupId>
-      <artifactId>aether-util</artifactId>
-      <version>0.9.0.M2</version>
-      <!-- provided scoped dependencies aren't shaded -->
-    </dependency>
-    <dependency>
-      <groupId>org.eclipse.aether</groupId>
-      <artifactId>aether-impl</artifactId>
-      <version>0.9.0.M2</version>
-      <scope>provided</scope>
-    </dependency>
+<!--    &lt;!&ndash; Maven 3.1.x and above &ndash;&gt;-->
+<!--    <dependency>-->
+<!--      <groupId>org.eclipse.aether</groupId>-->
+<!--      <artifactId>aether-api</artifactId>-->
+<!--      <version>0.9.0.M2</version>-->
+<!--      <scope>provided</scope>-->
+<!--    </dependency>-->
+<!--    <dependency>-->
+<!--      <groupId>org.eclipse.aether</groupId>-->
+<!--      <artifactId>aether-util</artifactId>-->
+<!--      <version>0.9.0.M2</version>-->
+<!--      &lt;!&ndash; provided scoped dependencies aren't shaded 
&ndash;&gt;-->
+<!--    </dependency>-->
+<!--    <dependency>-->
+<!--      <groupId>org.eclipse.aether</groupId>-->
+<!--      <artifactId>aether-impl</artifactId>-->
+<!--      <version>0.9.0.M2</version>-->
+<!--      <scope>provided</scope>-->
+<!--    </dependency>-->
 
     <dependency>
       <groupId>org.slf4j</groupId>
diff --git 
a/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/DefaultArtifactDeployer.java
 
b/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/DefaultArtifactDeployer.java
index 11a268c..e51e784 100644
--- 
a/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/DefaultArtifactDeployer.java
+++ 
b/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/DefaultArtifactDeployer.java
@@ -33,6 +33,8 @@ import 
org.codehaus.plexus.component.repository.exception.ComponentLookupExcepti
 import org.codehaus.plexus.context.Context;
 import org.codehaus.plexus.context.ContextException;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
 
 /**
  *
@@ -91,23 +93,6 @@ class DefaultArtifactDeployer implements ArtifactDeployer, 
Contextualizable
     }
 
     /**
-     * @return true if the current Maven version is Maven 3.1.
-     */
-    private boolean isMaven31()
-    {
-        try
-        {
-            // Maven 3.1 specific
-            Thread.currentThread().getContextClassLoader().loadClass( 
"org.eclipse.aether.artifact.Artifact" );
-            return true;
-        }
-        catch ( ClassNotFoundException e )
-        {
-            return false;
-        }
-    }
-
-    /**
      * Injects the Plexus content.
      *
      * @param context Plexus context to inject.
@@ -121,25 +106,10 @@ class DefaultArtifactDeployer implements 
ArtifactDeployer, Contextualizable
     private MavenArtifactDeployer getMavenArtifactDeployer( 
ProjectBuildingRequest buildingRequest )
             throws ComponentLookupException, ArtifactDeployerException
     {
-        if ( isMaven31() )
-        {
-            org.eclipse.aether.RepositorySystem repositorySystem = 
container.lookup(
-                    org.eclipse.aether.RepositorySystem.class );
-
-            org.eclipse.aether.RepositorySystemSession session = 
Invoker.invoke( buildingRequest,
-                    "getRepositorySession" );
+        RepositorySystem repositorySystem = container.lookup( 
RepositorySystem.class );
 
-            return new Maven31ArtifactDeployer( repositorySystem, session );
-        }
-        else
-        {
-            org.sonatype.aether.RepositorySystem repositorySystem = 
container.lookup(
-                    org.sonatype.aether.RepositorySystem.class );
+        RepositorySystemSession session = Invoker.invoke( buildingRequest, 
"getRepositorySession" );
 
-            org.sonatype.aether.RepositorySystemSession session = 
Invoker.invoke( buildingRequest,
-                    "getRepositorySession" );
-
-            return new Maven30ArtifactDeployer( repositorySystem, session );
-        }
+        return new Maven31ArtifactDeployer( repositorySystem, session );
     }
 }
diff --git 
a/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/Maven30ArtifactDeployer.java
 
b/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/Maven30ArtifactDeployer.java
deleted file mode 100644
index 611eb4c..0000000
--- 
a/src/main/java/org/apache/maven/shared/transfer/artifact/deploy/internal/Maven30ArtifactDeployer.java
+++ /dev/null
@@ -1,150 +0,0 @@
-package org.apache.maven.shared.transfer.artifact.deploy.internal;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.util.Collection;
-
-import org.apache.maven.RepositoryUtils;
-import org.apache.maven.artifact.metadata.ArtifactMetadata;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import 
org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
-import org.apache.maven.project.artifact.ProjectArtifactMetadata;
-import 
org.apache.maven.shared.transfer.artifact.deploy.ArtifactDeployerException;
-import 
org.apache.maven.shared.transfer.metadata.internal.Maven30MetadataBridge;
-import org.sonatype.aether.RepositorySystem;
-import org.sonatype.aether.RepositorySystemSession;
-import org.sonatype.aether.artifact.Artifact;
-import org.sonatype.aether.deployment.DeployRequest;
-import org.sonatype.aether.deployment.DeploymentException;
-import org.sonatype.aether.repository.RemoteRepository;
-import org.sonatype.aether.util.artifact.SubArtifact;
-
-/**
- * 
- */
-class Maven30ArtifactDeployer
-    implements MavenArtifactDeployer
-{
-
-    private final RepositorySystem repositorySystem;
-    
-    private final RepositorySystemSession session;
-    
-    Maven30ArtifactDeployer( RepositorySystem repositorySystem, 
RepositorySystemSession session )
-    {
-        this.repositorySystem = repositorySystem;
-        this.session = session;
-    }
-
-    @Override
-    public void deploy( Collection<org.apache.maven.artifact.Artifact> 
mavenArtifacts )
-                            throws ArtifactDeployerException
-    {
-        deploy( null, mavenArtifacts );
-    }
-
-    @Override
-    public void deploy( ArtifactRepository remoteRepository,
-                        Collection<org.apache.maven.artifact.Artifact> 
mavenArtifacts )
-                            throws ArtifactDeployerException
-    {
-        // prepare request
-        DeployRequest request = new DeployRequest();
-
-        RemoteRepository defaultRepository = null;
-
-        if ( remoteRepository != null )
-        {
-            defaultRepository = getRemoteRepository( session, remoteRepository 
);
-        }
-
-        // transform artifacts
-        for ( org.apache.maven.artifact.Artifact mavenArtifact : 
mavenArtifacts )
-        {
-            Artifact aetherArtifact = Invoker.invoke( RepositoryUtils.class, 
"toArtifact",
-                                       
org.apache.maven.artifact.Artifact.class, mavenArtifact );
-            request.addArtifact( aetherArtifact );
-
-            RemoteRepository aetherRepository;
-            if ( remoteRepository == null )
-            {
-                aetherRepository = getRemoteRepository( session, 
mavenArtifact.getRepository() );
-            }
-            else
-            {
-                aetherRepository = defaultRepository;
-            }
-
-            request.setRepository( aetherRepository );
-
-            for ( ArtifactMetadata metadata : mavenArtifact.getMetadataList() )
-            {
-                if ( metadata instanceof ProjectArtifactMetadata )
-                {
-                    Artifact pomArtifact = new SubArtifact( aetherArtifact, 
"", "pom" );
-                    pomArtifact = pomArtifact.setFile( ( 
(ProjectArtifactMetadata) metadata ).getFile() );
-                    request.addArtifact( pomArtifact );
-                }
-                else if ( // metadata instanceof 
SnapshotArtifactRepositoryMetadata ||
-                metadata instanceof ArtifactRepositoryMetadata )
-                {
-                    // eaten, handled by repo system
-                }
-                else if ( metadata instanceof 
org.apache.maven.shared.transfer.metadata.ArtifactMetadata )
-                {
-                    org.apache.maven.shared.transfer.metadata.ArtifactMetadata 
transferMedata =
-                                    ( 
org.apache.maven.shared.transfer.metadata.ArtifactMetadata ) metadata;
-                    
-                    request.addMetadata( new Maven30MetadataBridge( metadata 
).setFile( transferMedata.getFile() ) );
-                }
-            }
-        }
-
-        // deploy
-        try
-        {
-            repositorySystem.deploy( session, request );
-        }
-        catch ( DeploymentException e )
-        {
-            throw new ArtifactDeployerException( e.getMessage(), e );
-        }
-    }
-
-    private RemoteRepository getRemoteRepository( RepositorySystemSession 
session, ArtifactRepository remoteRepository )
-        throws ArtifactDeployerException
-    {
-        RemoteRepository aetherRepo = Invoker.invoke( RepositoryUtils.class, 
"toRepo",
-                                                                         
ArtifactRepository.class,
-                                                                         
remoteRepository );
-
-        if ( aetherRepo.getAuthentication() == null )
-        {
-            aetherRepo.setAuthentication( 
session.getAuthenticationSelector().getAuthentication( aetherRepo ) );
-        }
-
-        if ( aetherRepo.getProxy() == null )
-        {
-            aetherRepo.setProxy( session.getProxySelector().getProxy( 
aetherRepo ) );
-        }
-
-        return aetherRepo;
-    }
-}
diff --git 
a/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/DefaultArtifactInstaller.java
 
b/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/DefaultArtifactInstaller.java
index 238e814..bd963a7 100644
--- 
a/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/DefaultArtifactInstaller.java
+++ 
b/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/DefaultArtifactInstaller.java
@@ -35,6 +35,8 @@ import 
org.codehaus.plexus.component.repository.exception.ComponentLookupExcepti
 import org.codehaus.plexus.context.Context;
 import org.codehaus.plexus.context.ContextException;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
 
 /**
  *
@@ -108,23 +110,6 @@ class DefaultArtifactInstaller implements 
ArtifactInstaller, Contextualizable
     }
 
     /**
-     * @return true if the current Maven version is Maven 3.1.
-     */
-    private boolean isMaven31()
-    {
-        try
-        {
-            // Maven 3.1 specific
-            Thread.currentThread().getContextClassLoader().loadClass( 
"org.eclipse.aether.artifact.Artifact" );
-            return true;
-        }
-        catch ( ClassNotFoundException e )
-        {
-            return false;
-        }
-    }
-
-    /**
      * Injects the Plexus content.
      *
      * @param context Plexus context to inject.
@@ -138,25 +123,10 @@ class DefaultArtifactInstaller implements 
ArtifactInstaller, Contextualizable
     private MavenArtifactInstaller getMavenArtifactInstaller( 
ProjectBuildingRequest buildingRequest )
             throws ComponentLookupException, ArtifactInstallerException
     {
-        if ( isMaven31() )
-        {
-            org.eclipse.aether.RepositorySystem repositorySystem = 
container.lookup(
-                    org.eclipse.aether.RepositorySystem.class );
-
-            org.eclipse.aether.RepositorySystemSession session = 
Invoker.invoke( buildingRequest,
-                    "getRepositorySession" );
+        RepositorySystem repositorySystem = container.lookup( 
RepositorySystem.class );
 
-            return new Maven31ArtifactInstaller( repositorySystem, session );
-        }
-        else
-        {
-            org.sonatype.aether.RepositorySystem repositorySystem = 
container.lookup(
-                    org.sonatype.aether.RepositorySystem.class );
+        RepositorySystemSession session = Invoker.invoke( buildingRequest, 
"getRepositorySession" );
 
-            org.sonatype.aether.RepositorySystemSession session = 
Invoker.invoke( buildingRequest,
-                    "getRepositorySession" );
-
-            return new Maven30ArtifactInstaller( repositorySystem, session );
-        }
+        return new Maven31ArtifactInstaller( repositorySystem, session );
     }
 }
diff --git 
a/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/Maven30ArtifactInstaller.java
 
b/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/Maven30ArtifactInstaller.java
deleted file mode 100644
index fbff698..0000000
--- 
a/src/main/java/org/apache/maven/shared/transfer/artifact/install/internal/Maven30ArtifactInstaller.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package org.apache.maven.shared.transfer.artifact.install.internal;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.util.Collection;
-
-import org.apache.maven.RepositoryUtils;
-import org.apache.maven.artifact.metadata.ArtifactMetadata;
-import 
org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
-import org.apache.maven.project.artifact.ProjectArtifactMetadata;
-import 
org.apache.maven.shared.transfer.artifact.install.ArtifactInstallerException;
-import 
org.apache.maven.shared.transfer.metadata.internal.Maven30MetadataBridge;
-import org.sonatype.aether.RepositorySystem;
-import org.sonatype.aether.RepositorySystemSession;
-import org.sonatype.aether.artifact.Artifact;
-import org.sonatype.aether.installation.InstallRequest;
-import org.sonatype.aether.installation.InstallationException;
-import org.sonatype.aether.util.artifact.SubArtifact;
-
-/**
- * 
- */
-class Maven30ArtifactInstaller
-    implements MavenArtifactInstaller
-{
-    private final RepositorySystem repositorySystem;
-    
-    private final RepositorySystemSession session; 
-    
-    Maven30ArtifactInstaller( RepositorySystem repositorySystem, 
RepositorySystemSession session )
-    {
-        this.repositorySystem = repositorySystem;
-        this.session = session;
-    }
-
-    @Override
-    public void install( Collection<org.apache.maven.artifact.Artifact> 
mavenArtifacts )
-        throws ArtifactInstallerException
-    {
-        // prepare installRequest
-        InstallRequest request = new InstallRequest();
-
-        // transform artifacts
-        for ( org.apache.maven.artifact.Artifact mavenArtifact : 
mavenArtifacts )
-        {
-            Artifact mainArtifact = Invoker.invoke( RepositoryUtils.class, 
"toArtifact",
-                                       
org.apache.maven.artifact.Artifact.class, mavenArtifact );
-            request.addArtifact( mainArtifact );
-
-            for ( ArtifactMetadata metadata : mavenArtifact.getMetadataList() )
-            {
-                if ( metadata instanceof ProjectArtifactMetadata )
-                {
-                    Artifact pomArtifact = new SubArtifact( mainArtifact, "", 
"pom" );
-                    pomArtifact = pomArtifact.setFile( ( 
(ProjectArtifactMetadata) metadata ).getFile() );
-                    request.addArtifact( pomArtifact );
-                }
-                else if ( // metadata instanceof 
SnapshotArtifactRepositoryMetadata ||
-                metadata instanceof ArtifactRepositoryMetadata )
-                {
-                    // eaten, handled by repo system
-                }
-                else if ( metadata instanceof 
org.apache.maven.shared.transfer.metadata.ArtifactMetadata )
-                {
-                    org.apache.maven.shared.transfer.metadata.ArtifactMetadata 
transferMedata =
-                                    ( 
org.apache.maven.shared.transfer.metadata.ArtifactMetadata ) metadata;
-                    
-                    request.addMetadata( new Maven30MetadataBridge( metadata 
).setFile( transferMedata.getFile() ) );
-                }
-            }
-        }
-
-//        if ( localRepository != null )
-//        {
-//            buildingRequest = repositoryManager.setLocalRepositoryBasedir( 
buildingRequest, localRepository );
-//        }
-        
-        // install
-        try
-        {
-            repositorySystem.install( session, request );
-        }
-        catch ( InstallationException e )
-        {
-            throw new ArtifactInstallerException( e.getMessage(), e );
-        }
-    }
-}
diff --git 
a/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/DefaultArtifactResolver.java
 
b/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/DefaultArtifactResolver.java
index 83d7517..c6d1407 100644
--- 
a/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/DefaultArtifactResolver.java
+++ 
b/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/DefaultArtifactResolver.java
@@ -35,6 +35,9 @@ import 
org.codehaus.plexus.component.repository.exception.ComponentLookupExcepti
 import org.codehaus.plexus.context.Context;
 import org.codehaus.plexus.context.ContextException;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.repository.RemoteRepository;
 
 
 /**
@@ -100,23 +103,6 @@ class DefaultArtifactResolver implements ArtifactResolver, 
Contextualizable
     }
 
     /**
-     * @return true if the current Maven version is Maven 3.1.
-     */
-    private boolean isMaven31()
-    {
-        try
-        {
-            // Maven 3.1 specific
-            Thread.currentThread().getContextClassLoader().loadClass( 
"org.eclipse.aether.artifact.Artifact" );
-            return true;
-        }
-        catch ( ClassNotFoundException e )
-        {
-            return false;
-        }
-    }
-
-    /**
      * Injects the Plexus content.
      *
      * @param context Plexus context to inject.
@@ -130,34 +116,14 @@ class DefaultArtifactResolver implements 
ArtifactResolver, Contextualizable
     private MavenArtifactResolver getMavenArtifactResolver( 
ProjectBuildingRequest buildingRequest )
             throws ComponentLookupException, ArtifactResolverException
     {
-        if ( isMaven31() )
-        {
-            org.eclipse.aether.RepositorySystem repositorySystem = 
container.lookup(
-                    org.eclipse.aether.RepositorySystem.class );
-
-            List<org.eclipse.aether.repository.RemoteRepository> 
aetherRepositories = Invoker.invoke(
-                    RepositoryUtils.class, "toRepos", List.class, 
buildingRequest.getRemoteRepositories() );
-
-            org.eclipse.aether.RepositorySystemSession session = 
Invoker.invoke( buildingRequest,
-                    "getRepositorySession" );
+        RepositorySystem repositorySystem = container.lookup( 
RepositorySystem.class );
 
-            return new Maven31ArtifactResolver( repositorySystem, 
aetherRepositories, session );
+        List<RemoteRepository> aetherRepositories = Invoker.invoke(
+                RepositoryUtils.class, "toRepos", List.class, 
buildingRequest.getRemoteRepositories() );
 
-        }
-        else
-        {
-            org.sonatype.aether.RepositorySystem repositorySystem = 
container.lookup(
-                    org.sonatype.aether.RepositorySystem.class );
-
-            List<org.sonatype.aether.repository.RemoteRepository> 
aetherRepositories = Invoker.invoke(
-                    RepositoryUtils.class, "toRepos", List.class, 
buildingRequest.getRemoteRepositories() );
-
-            org.sonatype.aether.RepositorySystemSession session = 
Invoker.invoke( buildingRequest,
-                    "getRepositorySession" );
-
-            return new Maven30ArtifactResolver( repositorySystem, 
aetherRepositories, session );
-        }
+        RepositorySystemSession session = Invoker.invoke( buildingRequest, 
"getRepositorySession" );
 
+        return new Maven31ArtifactResolver( repositorySystem, 
aetherRepositories, session );
 
     }
 }
diff --git 
a/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven30ArtifactResolver.java
 
b/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven30ArtifactResolver.java
deleted file mode 100644
index 95a6dc5..0000000
--- 
a/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven30ArtifactResolver.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package org.apache.maven.shared.transfer.artifact.resolve.internal;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.util.List;
-
-import org.apache.maven.RepositoryUtils;
-import org.apache.maven.shared.transfer.artifact.ArtifactCoordinate;
-import 
org.apache.maven.shared.transfer.artifact.resolve.ArtifactResolverException;
-import org.sonatype.aether.RepositorySystem;
-import org.sonatype.aether.RepositorySystemSession;
-import org.sonatype.aether.artifact.Artifact;
-import org.sonatype.aether.repository.RemoteRepository;
-import org.sonatype.aether.resolution.ArtifactDescriptorException;
-import org.sonatype.aether.resolution.ArtifactDescriptorRequest;
-import org.sonatype.aether.resolution.ArtifactDescriptorResult;
-import org.sonatype.aether.resolution.ArtifactRequest;
-import org.sonatype.aether.resolution.ArtifactResolutionException;
-import org.sonatype.aether.util.artifact.DefaultArtifact;
-
-/**
- * 
- */
-class Maven30ArtifactResolver
-    implements MavenArtifactResolver
-{
-    private final RepositorySystem repositorySystem;
-
-    private final List<RemoteRepository> aetherRepositories;
-    
-    private final RepositorySystemSession session;
-
-    Maven30ArtifactResolver( RepositorySystem repositorySystem, 
List<RemoteRepository> aetherRepositories,
-                                    RepositorySystemSession session )
-    {
-        this.repositorySystem = repositorySystem;
-        this.aetherRepositories = aetherRepositories;
-        this.session = session;
-    }
-
-    @Override
-    // CHECKSTYLE_OFF: LineLength
-    public org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult 
resolveArtifact( org.apache.maven.artifact.Artifact mavenArtifact )
-                                                                               
         throws ArtifactResolverException
-    // CHECKSTYLE_ON: LineLength
-    {
-        Artifact aetherArtifact = Invoker.invoke( RepositoryUtils.class, 
"toArtifact",
-                                                             
org.apache.maven.artifact.Artifact.class, mavenArtifact );
-
-        return resolveArtifact( aetherArtifact );
-    }
-
-    @Override
-    // CHECKSTYLE_OFF: LineLength
-    public org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult 
resolveArtifact( ArtifactCoordinate coordinate )
-                                                                               
         throws ArtifactResolverException
-    // CHECKSTYLE_ON: LineLength
-    {
-        Artifact aetherArtifact =
-            new DefaultArtifact( coordinate.getGroupId(), 
coordinate.getArtifactId(), coordinate.getClassifier(),
-                                 coordinate.getExtension(), 
coordinate.getVersion() );
-
-        return resolveArtifact( aetherArtifact );
-    }
-
-    // CHECKSTYLE_OFF: LineLength
-    private org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult 
resolveArtifact( Artifact aetherArtifact )
-                                                                               
          throws ArtifactResolverException
-    // CHECKSTYLE_ON: LineLength
-    {
-        try
-        {
-            // use descriptor to respect relocation
-            ArtifactDescriptorRequest descriptorRequest =
-                new ArtifactDescriptorRequest( aetherArtifact, 
aetherRepositories, null );
-
-            ArtifactDescriptorResult descriptorResult =
-                repositorySystem.readArtifactDescriptor( session, 
descriptorRequest );
-
-            ArtifactRequest request = new ArtifactRequest( 
descriptorResult.getArtifact(), aetherRepositories, null );
-
-            return new Maven30ArtifactResult( 
repositorySystem.resolveArtifact( session, request ) );
-        }
-        catch ( ArtifactDescriptorException | ArtifactResolutionException e )
-        {
-            throw new ArtifactResolverException( e.getMessage(), e );
-        }
-    }
-
-}
diff --git 
a/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven30ArtifactResult.java
 
b/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven30ArtifactResult.java
deleted file mode 100644
index 3bbea28..0000000
--- 
a/src/main/java/org/apache/maven/shared/transfer/artifact/resolve/internal/Maven30ArtifactResult.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.apache.maven.shared.transfer.artifact.resolve.internal;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.apache.maven.RepositoryUtils;
-import 
org.apache.maven.shared.transfer.artifact.resolve.ArtifactResolverException;
-import org.sonatype.aether.artifact.Artifact;
-import org.sonatype.aether.resolution.ArtifactResult;
-
-/**
- * {@link org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult} 
wrapper for {@link ArtifactResult}
- *
- * @author Robert Scholte
- * @since 3.0
- */
-class Maven30ArtifactResult implements 
org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult
-{
-    private final ArtifactResult artifactResult;
-
-    /**
-     * @param artifactResult {@link ArtifactResult}
-     */
-    Maven30ArtifactResult( ArtifactResult artifactResult )
-    {
-        this.artifactResult = artifactResult;
-    }
-
-    @Override
-    public org.apache.maven.artifact.Artifact getArtifact()
-    {
-        try
-        {
-            return Invoker.invoke( RepositoryUtils.class, "toArtifact", 
Artifact.class, artifactResult.getArtifact() );
-        }
-        catch ( ArtifactResolverException e )
-        {
-            throw new RuntimeException( e );
-        }
-    }
-}
diff --git 
a/src/main/java/org/apache/maven/shared/transfer/collection/internal/DefaultDependencyCollector.java
 
b/src/main/java/org/apache/maven/shared/transfer/collection/internal/DefaultDependencyCollector.java
index e6ce50e..df2a248 100644
--- 
a/src/main/java/org/apache/maven/shared/transfer/collection/internal/DefaultDependencyCollector.java
+++ 
b/src/main/java/org/apache/maven/shared/transfer/collection/internal/DefaultDependencyCollector.java
@@ -38,6 +38,9 @@ import 
org.codehaus.plexus.component.repository.exception.ComponentLookupExcepti
 import org.codehaus.plexus.context.Context;
 import org.codehaus.plexus.context.ContextException;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.repository.RemoteRepository;
 
 /**
  * This DependencyCollector passes the request to the proper Maven 3.x 
implementation
@@ -128,23 +131,6 @@ class DefaultDependencyCollector implements 
DependencyCollector, Contextualizabl
     Objects.requireNonNull( root, "The parameter root is not allowed to be 
null." );
   }
 
-  /**
-   * @return true if the current Maven version is Maven 3.1.
-   */
-  private boolean isMaven31()
-  {
-      try
-      {
-          // Maven 3.1 specific
-          Thread.currentThread().getContextClassLoader().loadClass( 
"org.eclipse.aether.artifact.Artifact" );
-          return true;
-      }
-      catch ( ClassNotFoundException e )
-      {
-          return false;
-      }
-  }
-
     /**
      * Injects the Plexus content.
      *
@@ -161,35 +147,15 @@ class DefaultDependencyCollector implements 
DependencyCollector, Contextualizabl
     {
         ArtifactHandlerManager artifactHandlerManager = container.lookup( 
ArtifactHandlerManager.class );
 
-        if ( isMaven31() )
-        {
-            org.eclipse.aether.RepositorySystem m31RepositorySystem = 
container.lookup(
-                    org.eclipse.aether.RepositorySystem.class );
-
-            org.eclipse.aether.RepositorySystemSession session = 
Invoker.invoke( buildingRequest,
-                    "getRepositorySession" );
+        RepositorySystem m31RepositorySystem = container.lookup( 
RepositorySystem.class );
 
-            List<org.eclipse.aether.repository.RemoteRepository> 
aetherRepositories = Invoker.invoke(
-                    RepositoryUtils.class, "toRepos", List.class, 
buildingRequest.getRemoteRepositories() );
+        RepositorySystemSession session = Invoker.invoke( buildingRequest, 
"getRepositorySession" );
 
-            return new Maven31DependencyCollector( m31RepositorySystem, 
artifactHandlerManager, session,
-                    aetherRepositories );
-        }
-        else
-        {
-            org.sonatype.aether.RepositorySystem m30RepositorySystem = 
container.lookup(
-                    org.sonatype.aether.RepositorySystem.class );
-
-            org.sonatype.aether.RepositorySystemSession session = 
Invoker.invoke( buildingRequest,
-                    "getRepositorySession" );
-
-            List<org.sonatype.aether.repository.RemoteRepository> 
aetherRepositories = Invoker.invoke(
-                    RepositoryUtils.class, "toRepos", List.class, 
buildingRequest.getRemoteRepositories() );
-
-            return new Maven30DependencyCollector( m30RepositorySystem, 
artifactHandlerManager, session,
-                    aetherRepositories );
-        }
+        List<RemoteRepository> aetherRepositories = Invoker.invoke(
+                RepositoryUtils.class, "toRepos", List.class, 
buildingRequest.getRemoteRepositories() );
 
+        return new Maven31DependencyCollector( m31RepositorySystem, 
artifactHandlerManager, session,
+                aetherRepositories );
     }
 
 }
diff --git 
a/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven30ArtifactRepositoryAdapter.java
 
b/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven30ArtifactRepositoryAdapter.java
deleted file mode 100644
index 40d9143..0000000
--- 
a/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven30ArtifactRepositoryAdapter.java
+++ /dev/null
@@ -1,265 +0,0 @@
-package org.apache.maven.shared.transfer.collection.internal;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.util.List;
-
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.metadata.ArtifactMetadata;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
-import org.apache.maven.artifact.repository.Authentication;
-import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
-import org.apache.maven.repository.Proxy;
-import org.sonatype.aether.repository.RemoteRepository;
-import org.sonatype.aether.repository.RepositoryPolicy;
-
-/**
- * ArtifactRepository wrapper around {@link RemoteRepository}
- * 
- * @author Robert Scholte
- *
- */
-class Maven30ArtifactRepositoryAdapter implements ArtifactRepository
-{
-    private static final String LS = System.lineSeparator();
-    private RemoteRepository remoteRepository;
-
-    /**
-     * @param remoteRepository {@link RemoteRepository}
-     */
-    Maven30ArtifactRepositoryAdapter( RemoteRepository remoteRepository )
-    {
-        this.remoteRepository = remoteRepository;
-    }
-
-    @Override
-    public String pathOf( Artifact artifact )
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public String pathOfRemoteRepositoryMetadata( ArtifactMetadata 
artifactMetadata )
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public String pathOfLocalRepositoryMetadata( ArtifactMetadata metadata, 
ArtifactRepository repository )
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public String getUrl()
-    {
-        return remoteRepository.getUrl();
-    }
-
-    @Override
-    public void setUrl( String url )
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public String getBasedir()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public String getProtocol()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public String getId()
-    {
-        return remoteRepository.getId();
-    }
-
-    @Override
-    public void setId( String id )
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public ArtifactRepositoryPolicy getSnapshots()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setSnapshotUpdatePolicy( ArtifactRepositoryPolicy policy )
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public ArtifactRepositoryPolicy getReleases()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setReleaseUpdatePolicy( ArtifactRepositoryPolicy policy )
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public ArtifactRepositoryLayout getLayout()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setLayout( ArtifactRepositoryLayout layout )
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public String getKey()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean isUniqueVersion()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean isBlacklisted()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setBlacklisted( boolean blackListed )
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Artifact find( Artifact artifact )
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public List<String> findVersions( Artifact artifact )
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean isProjectAware()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setAuthentication( Authentication authentication )
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Authentication getAuthentication()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setProxy( Proxy proxy )
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Proxy getProxy()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public String toString()
-    {
-        StringBuilder sb = new StringBuilder();
-
-        sb.append( "       id: " ).append( getId() ).append( LS );
-        sb.append( "      url: " ).append( getUrl() ).append( LS );
-        sb.append( "   layout: " ).append( "default" ).append( LS );
-
-        RepositoryPolicy snapshotPolicy = remoteRepository.getPolicy( true ); 
-        sb.append( "snapshots: [enabled => " ).append( 
snapshotPolicy.isEnabled() );
-        sb.append( ", update => " ).append( snapshotPolicy.getUpdatePolicy() 
).append( "]" ).append( LS );
-
-        RepositoryPolicy releasePolicy = remoteRepository.getPolicy( false ); 
-        sb.append( " releases: [enabled => " ).append( 
releasePolicy.isEnabled() );
-        sb.append( ", update => " ).append( releasePolicy.getUpdatePolicy() 
).append( "]" ).append( LS );
-
-        return sb.toString();
-    }
-    
-    @Override
-    public int hashCode()
-    {
-        return remoteRepository.hashCode();
-    }
-
-    @Override
-    public boolean equals( Object obj )
-    {
-        if ( this == obj )
-        {
-            return true;
-        }
-        if ( obj == null )
-        {
-            return false;
-        }
-        if ( getClass() != obj.getClass() )
-        {
-            return false;
-        }
-        
-        Maven30ArtifactRepositoryAdapter other = 
(Maven30ArtifactRepositoryAdapter) obj;
-        if ( remoteRepository == null )
-        {
-            if ( other.remoteRepository != null )
-            {
-                return false;
-            }
-        }
-        else if ( !remoteRepository.equals( other.remoteRepository ) )
-        {
-            return false;
-        }
-        return true;
-    }
-}
diff --git 
a/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven30CollectResult.java
 
b/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven30CollectResult.java
deleted file mode 100644
index c5e6c90..0000000
--- 
a/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven30CollectResult.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package org.apache.maven.shared.transfer.collection.internal;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.util.List;
-
-import org.apache.maven.shared.transfer.collection.CollectResult;
-import org.apache.maven.shared.transfer.graph.DependencyNode;
-
-
-/**
- * CollectResult wrapper around {@link CollectResult}
- * 
- * @author Pim Moerenhout
- *
- */
-class Maven30CollectResult implements CollectResult
-{
-    private final org.sonatype.aether.collection.CollectResult collectResult;
-
-    /**
-     * @param collectResult {@link CollectResult}
-     */
-    Maven30CollectResult( org.sonatype.aether.collection.CollectResult 
collectResult )
-    {
-        this.collectResult = collectResult;
-    }
-
-    @Override
-    public List<Exception> getExceptions()
-    {
-        return collectResult.getExceptions();
-    }
-
-    /**
-     * Gets the root node of the dependency graph.
-     *
-     * @return The root node of the dependency graph or {@code null} if none.
-     */
-    @Override
-    public DependencyNode getRoot()
-    {
-        return new Maven30DependencyNodeAdapter( collectResult.getRoot() );
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.valueOf( getRoot() );
-    }
-}
diff --git 
a/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven30DependencyCollector.java
 
b/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven30DependencyCollector.java
deleted file mode 100644
index 108db21..0000000
--- 
a/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven30DependencyCollector.java
+++ /dev/null
@@ -1,167 +0,0 @@
-package org.apache.maven.shared.transfer.collection.internal;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.maven.RepositoryUtils;
-import org.apache.maven.artifact.handler.ArtifactHandler;
-import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
-import org.apache.maven.model.Model;
-import org.apache.maven.shared.transfer.collection.CollectResult;
-import 
org.apache.maven.shared.transfer.collection.DependencyCollectionException;
-import org.apache.maven.shared.transfer.collection.DependencyCollector;
-import org.apache.maven.shared.transfer.dependencies.DependableCoordinate;
-import org.sonatype.aether.RepositorySystem;
-import org.sonatype.aether.RepositorySystemSession;
-import org.sonatype.aether.artifact.Artifact;
-import org.sonatype.aether.artifact.ArtifactTypeRegistry;
-import org.sonatype.aether.collection.CollectRequest;
-import org.sonatype.aether.graph.Dependency;
-import org.sonatype.aether.repository.RemoteRepository;
-import org.sonatype.aether.util.artifact.DefaultArtifact;
-
-/**
- * Maven 3.0 implementation of the {@link DependencyCollector}
- * 
- * @author Robert Scholte
- *
- */
-class Maven30DependencyCollector
-    implements MavenDependencyCollector
-{
-    private final RepositorySystem repositorySystem;
-
-    private final ArtifactHandlerManager artifactHandlerManager;
-
-    private final RepositorySystemSession session;
-    
-    private final List<RemoteRepository> aetherRepositories;
-    
-    Maven30DependencyCollector( RepositorySystem repositorySystem, 
ArtifactHandlerManager artifactHandlerManager,
-                                RepositorySystemSession session, 
List<RemoteRepository> aetherRepositories )
-    {
-        super();
-        this.repositorySystem = repositorySystem;
-        this.artifactHandlerManager = artifactHandlerManager;
-        this.session = session;
-        this.aetherRepositories = aetherRepositories;
-    }
-
-    @Override
-    public CollectResult collectDependencies( 
org.apache.maven.model.Dependency root )
-        throws DependencyCollectionException
-    {
-        ArtifactTypeRegistry typeRegistry = Invoker
-            .invoke( RepositoryUtils.class, "newArtifactTypeRegistry",
-                                               ArtifactHandlerManager.class, 
artifactHandlerManager );
-
-        CollectRequest request = new CollectRequest();
-        request.setRoot( toDependency( root, typeRegistry ) );
-
-        return collectDependencies( request );
-    }
-
-    @Override
-    public CollectResult collectDependencies( DependableCoordinate root )
-        throws DependencyCollectionException
-    {
-        ArtifactHandler artifactHandler = 
artifactHandlerManager.getArtifactHandler( root.getType() );
-
-        String extension = artifactHandler != null ? 
artifactHandler.getExtension() : null;
-
-        Artifact aetherArtifact = new DefaultArtifact( root.getGroupId(), 
root.getArtifactId(), root.getClassifier(),
-                                                       extension, 
root.getVersion() );
-
-        CollectRequest request = new CollectRequest();
-        request.setRoot( new Dependency( aetherArtifact, null ) );
-
-        return collectDependencies( request );
-    }
-
-    @Override
-    public CollectResult collectDependencies( Model root )
-        throws DependencyCollectionException
-    {
-        // Are there examples where packaging and type are NOT in sync
-        ArtifactHandler artifactHandler = 
artifactHandlerManager.getArtifactHandler( root.getPackaging() );
-
-        String extension = artifactHandler != null ? 
artifactHandler.getExtension() : null;
-
-        Artifact aetherArtifact =
-            new DefaultArtifact( root.getGroupId(), root.getArtifactId(), 
extension, root.getVersion() );
-
-        CollectRequest request = new CollectRequest();
-        request.setRoot( new Dependency( aetherArtifact, null ) );
-
-        ArtifactTypeRegistry typeRegistry = Invoker
-            .invoke( RepositoryUtils.class, "newArtifactTypeRegistry",
-                                               ArtifactHandlerManager.class, 
artifactHandlerManager );
-
-        List<Dependency> aetherDependencies = new ArrayList<>( 
root.getDependencies().size() );
-        for ( org.apache.maven.model.Dependency mavenDependency : 
root.getDependencies() )
-        {
-            aetherDependencies.add( toDependency( mavenDependency, 
typeRegistry ) );
-        }
-        request.setDependencies( aetherDependencies );
-
-        if ( root.getDependencyManagement() != null )
-        {
-            List<Dependency> aetherManagerDependencies = new ArrayList<>(
-                    root.getDependencyManagement().getDependencies().size() );
-
-            for ( org.apache.maven.model.Dependency mavenDependency : 
root.getDependencyManagement().getDependencies() )
-            {
-                aetherManagerDependencies.add( toDependency( mavenDependency, 
typeRegistry ) );
-            }
-
-            request.setManagedDependencies( aetherManagerDependencies );
-        }
-
-        return collectDependencies( request );
-    }
-
-    private CollectResult collectDependencies( CollectRequest request )
-        throws DependencyCollectionException
-    {
-        request.setRepositories( aetherRepositories );
-
-        try
-        {
-            return new Maven30CollectResult( 
repositorySystem.collectDependencies( session, request ) );
-        }
-        catch ( org.sonatype.aether.collection.DependencyCollectionException e 
)
-        {
-            throw new DependencyCollectionException( e.getMessage(), e );
-        }
-    }
-
-    private static Dependency toDependency( org.apache.maven.model.Dependency 
mavenDependency,
-                                            ArtifactTypeRegistry typeRegistry )
-        throws DependencyCollectionException
-    {
-        Class<?>[] argClasses = new Class<?>[] { 
org.apache.maven.model.Dependency.class, ArtifactTypeRegistry.class };
-
-        Object[] args = new Object[] { mavenDependency, typeRegistry };
-
-        return Invoker.invoke( RepositoryUtils.class, "toDependency", 
argClasses, args );
-    }
-}
diff --git 
a/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven30DependencyNodeAdapter.java
 
b/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven30DependencyNodeAdapter.java
deleted file mode 100644
index fa96b35..0000000
--- 
a/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven30DependencyNodeAdapter.java
+++ /dev/null
@@ -1,163 +0,0 @@
-package org.apache.maven.shared.transfer.collection.internal;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.maven.RepositoryUtils;
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import 
org.apache.maven.shared.transfer.collection.DependencyCollectionException;
-import org.apache.maven.shared.transfer.graph.DependencyNode;
-import org.apache.maven.shared.transfer.graph.DependencyVisitor;
-import org.sonatype.aether.repository.RemoteRepository;
-
-/**
- * DependencyCollectorNode wrapper around {@link 
org.sonatype.aether.graph.DependencyNode}
- * 
- * @author Pim Moerenhout
- *
- */
-class Maven30DependencyNodeAdapter implements DependencyNode
-{
-
-    private org.sonatype.aether.graph.DependencyNode dependencyNode;
-
-    /**
-     * @param dependencyNode {@link org.sonatype.aether.graph.DependencyNode}
-     */
-    Maven30DependencyNodeAdapter( org.sonatype.aether.graph.DependencyNode 
dependencyNode )
-    {
-        this.dependencyNode = dependencyNode;
-    }
-
-    @Override
-    public Artifact getArtifact()
-    {
-        return getArtifact( dependencyNode.getDependency().getArtifact() );
-    }
-
-    @Override
-    public List<DependencyNode> getChildren()
-    {
-        List<org.sonatype.aether.graph.DependencyNode> aetherChildren = 
dependencyNode.getChildren();
-        List<DependencyNode> children = new ArrayList<>( aetherChildren.size() 
);
-        for ( org.sonatype.aether.graph.DependencyNode aetherChild : 
aetherChildren )
-        {
-            children.add( new Maven30DependencyNodeAdapter( aetherChild ) );
-        }
-        return children;
-    }
-
-    @Override
-    public List<ArtifactRepository> getRemoteRepositories()
-    {
-        List<RemoteRepository> aetherRepositories = 
dependencyNode.getRepositories();
-        List<ArtifactRepository> mavenRepositories = new ArrayList<>( 
aetherRepositories.size() );
-
-        for ( RemoteRepository aetherRepository : aetherRepositories )
-        {
-            mavenRepositories.add( new Maven30ArtifactRepositoryAdapter( 
aetherRepository ) );
-        }
-
-        return mavenRepositories;
-    }
-
-    @Override
-    public Boolean getOptional()
-    {
-        return dependencyNode.getDependency().isOptional();
-    }
-
-    @Override
-    public String getScope()
-    {
-        return dependencyNode.getDependency().getScope();
-    }
-
-    @Override
-    public boolean accept( DependencyVisitor visitor )
-    {
-        if ( visitor.visitEnter( this ) )
-        {
-            for ( org.sonatype.aether.graph.DependencyNode aetherNode : 
dependencyNode.getChildren() )
-            {
-                DependencyNode child = new Maven30DependencyNodeAdapter( 
aetherNode );
-                if ( !child.accept( visitor ) )
-                {
-                    break;
-                }
-            }
-        }
-
-        return visitor.visitLeave( this );
-    }
-
-    @Override
-    public int hashCode()
-    {
-        return dependencyNode.hashCode();
-    }
-
-    @Override
-    public boolean equals( Object obj )
-    {
-        if ( this == obj )
-        {
-            return true;
-        }
-        if ( obj == null )
-        {
-            return false;
-        }
-        if ( getClass() != obj.getClass() )
-        {
-            return false;
-        }
-
-        Maven30DependencyNodeAdapter other = (Maven30DependencyNodeAdapter) 
obj;
-        if ( dependencyNode == null )
-        {
-            if ( other.dependencyNode != null )
-            {
-                return false;
-            }
-        }
-        else if ( !dependencyNode.equals( other.dependencyNode ) )
-        {
-            return false;
-        }
-        return true;
-    }
-
-    private Artifact getArtifact( org.sonatype.aether.artifact.Artifact 
aetherArtifact )
-    {
-        try
-        {
-            return Invoker.invoke( RepositoryUtils.class, "toArtifact",
-                org.sonatype.aether.artifact.Artifact.class, aetherArtifact );
-        }
-        catch ( DependencyCollectionException e )
-        {
-            throw new RuntimeException( e );
-        }
-    }
-}
diff --git 
a/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven31ArtifactRepositoryAdapter.java
 
b/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven31ArtifactRepositoryAdapter.java
index d53a452..860fef0 100644
--- 
a/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven31ArtifactRepositoryAdapter.java
+++ 
b/src/main/java/org/apache/maven/shared/transfer/collection/internal/Maven31ArtifactRepositoryAdapter.java
@@ -19,6 +19,7 @@ package org.apache.maven.shared.transfer.collection.internal;
  * under the License.
  */
 
+import java.util.Collections;
 import java.util.List;
 
 import org.apache.maven.artifact.Artifact;
@@ -41,6 +42,7 @@ class Maven31ArtifactRepositoryAdapter implements 
ArtifactRepository
 {
     private static final String LS = System.lineSeparator();
     private RemoteRepository remoteRepository;
+    private List<ArtifactRepository> mirroredRepositories = 
Collections.emptyList();
 
     /**
      * @param remoteRepository {@link RemoteRepository}
@@ -206,6 +208,33 @@ class Maven31ArtifactRepositoryAdapter implements 
ArtifactRepository
         throw new UnsupportedOperationException();
     }
 
+    /**
+     * @return the repositories mirrored by the actual one
+     * @since 3.0.3
+     */
+    @Override
+    public List<ArtifactRepository> getMirroredRepositories()
+    {
+        return mirroredRepositories;
+    }
+
+    /**
+     * @param mirroredRepositories the repositories that the actual one mirrors
+     * @since 3.0.3
+     */
+    @Override
+    public void setMirroredRepositories( List<ArtifactRepository> 
mirroredRepositories )
+    {
+        if ( mirroredRepositories != null )
+        {
+            this.mirroredRepositories = mirroredRepositories;
+        }
+        else
+        {
+            this.mirroredRepositories = Collections.emptyList();
+        }
+    }
+
     @Override
     public String toString()
     {
diff --git 
a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/DefaultDependencyCollector.java
 
b/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/DefaultDependencyCollector.java
index fb1e498..160dca3 100644
--- 
a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/DefaultDependencyCollector.java
+++ 
b/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/DefaultDependencyCollector.java
@@ -37,6 +37,9 @@ import 
org.codehaus.plexus.component.repository.exception.ComponentLookupExcepti
 import org.codehaus.plexus.context.Context;
 import org.codehaus.plexus.context.ContextException;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.repository.RemoteRepository;
 
 /**
  * This DependencyCollector passes the request to the proper Maven 3.x 
implementation
@@ -131,23 +134,6 @@ class DefaultDependencyCollector implements 
DependencyCollector, Contextualizabl
     }
 
     /**
-     * @return true if the current Maven version is Maven 3.1.
-     */
-    private boolean isMaven31()
-    {
-        try
-        {
-            // Maven 3.1 specific
-            Thread.currentThread().getContextClassLoader().loadClass( 
"org.eclipse.aether.artifact.Artifact" );
-            return true;
-        }
-        catch ( ClassNotFoundException e )
-        {
-            return false;
-        }
-    }
-
-    /**
      * Injects the Plexus content.
      *
      * @param context Plexus context to inject.
@@ -163,35 +149,15 @@ class DefaultDependencyCollector implements 
DependencyCollector, Contextualizabl
     {
         ArtifactHandlerManager artifactHandlerManager = container.lookup( 
ArtifactHandlerManager.class );
 
-        if ( isMaven31() )
-        {
-            org.eclipse.aether.RepositorySystem m31RepositorySystem = 
container.lookup(
-                    org.eclipse.aether.RepositorySystem.class );
-
-            org.eclipse.aether.RepositorySystemSession session = 
Invoker.invoke( buildingRequest,
-                    "getRepositorySession" );
+        RepositorySystem m31RepositorySystem = container.lookup( 
RepositorySystem.class );
 
-            List<org.eclipse.aether.repository.RemoteRepository> 
aetherRepositories = Invoker.invoke(
-                    RepositoryUtils.class, "toRepos", List.class, 
buildingRequest.getRemoteRepositories() );
+        RepositorySystemSession session = Invoker.invoke( buildingRequest, 
"getRepositorySession" );
 
-            return new Maven31DependencyCollector( m31RepositorySystem, 
artifactHandlerManager, session,
-                    aetherRepositories );
-        }
-        else
-        {
+        List<RemoteRepository> aetherRepositories = Invoker.invoke(
+                RepositoryUtils.class, "toRepos", List.class, 
buildingRequest.getRemoteRepositories() );
 
-            org.sonatype.aether.RepositorySystem m30RepositorySystem = 
container.lookup(
-                    org.sonatype.aether.RepositorySystem.class );
-
-            org.sonatype.aether.RepositorySystemSession session = 
Invoker.invoke( buildingRequest,
-                    "getRepositorySession" );
-
-            List<org.sonatype.aether.repository.RemoteRepository> 
aetherRepositories = Invoker.invoke(
-                    RepositoryUtils.class, "toRepos", List.class, 
buildingRequest.getRemoteRepositories() );
-
-            return new Maven30DependencyCollector( m30RepositorySystem, 
artifactHandlerManager, session,
-                    aetherRepositories );
-        }
+        return new Maven31DependencyCollector( m31RepositorySystem, 
artifactHandlerManager, session,
+                aetherRepositories );
 
     }
 
diff --git 
a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven30ArtifactRepositoryAdapter.java
 
b/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven30ArtifactRepositoryAdapter.java
deleted file mode 100644
index b09ccd4..0000000
--- 
a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven30ArtifactRepositoryAdapter.java
+++ /dev/null
@@ -1,266 +0,0 @@
-package org.apache.maven.shared.transfer.dependencies.collect.internal;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.util.List;
-
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.metadata.ArtifactMetadata;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
-import org.apache.maven.artifact.repository.Authentication;
-import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
-import org.apache.maven.repository.Proxy;
-import org.sonatype.aether.repository.RemoteRepository;
-import org.sonatype.aether.repository.RepositoryPolicy;
-
-/**
- * ArtifactRepository wrapper around {@link RemoteRepository}
- * 
- * @author Robert Scholte
- *
- */
-class Maven30ArtifactRepositoryAdapter implements ArtifactRepository
-{
-    
-    private RemoteRepository remoteRepository;
-
-    /**
-     * @param remoteRepository {@link RemoteRepository}
-     */
-    Maven30ArtifactRepositoryAdapter( RemoteRepository remoteRepository )
-    {
-        this.remoteRepository = remoteRepository;
-    }
-
-    @Override
-    public String pathOf( Artifact artifact )
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public String pathOfRemoteRepositoryMetadata( ArtifactMetadata 
artifactMetadata )
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public String pathOfLocalRepositoryMetadata( ArtifactMetadata metadata, 
ArtifactRepository repository )
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public String getUrl()
-    {
-        return remoteRepository.getUrl();
-    }
-
-    @Override
-    public void setUrl( String url )
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public String getBasedir()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public String getProtocol()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public String getId()
-    {
-        return remoteRepository.getId();
-    }
-
-    @Override
-    public void setId( String id )
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public ArtifactRepositoryPolicy getSnapshots()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setSnapshotUpdatePolicy( ArtifactRepositoryPolicy policy )
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public ArtifactRepositoryPolicy getReleases()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setReleaseUpdatePolicy( ArtifactRepositoryPolicy policy )
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public ArtifactRepositoryLayout getLayout()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setLayout( ArtifactRepositoryLayout layout )
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public String getKey()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean isUniqueVersion()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean isBlacklisted()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setBlacklisted( boolean blackListed )
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Artifact find( Artifact artifact )
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public List<String> findVersions( Artifact artifact )
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean isProjectAware()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setAuthentication( Authentication authentication )
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Authentication getAuthentication()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setProxy( Proxy proxy )
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Proxy getProxy()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public String toString()
-    {
-        StringBuilder sb = new StringBuilder();
-
-        sb.append( "       id: " ).append( getId() ).append( "\n" );
-        sb.append( "      url: " ).append( getUrl() ).append( "\n" );
-        sb.append( "   layout: " ).append( "default" ).append( "\n" );
-
-        RepositoryPolicy snapshotPolicy = remoteRepository.getPolicy( true ); 
-        sb.append( "snapshots: [enabled => " ).append( 
snapshotPolicy.isEnabled() );
-        sb.append( ", update => " ).append( snapshotPolicy.getUpdatePolicy() 
).append( "]\n" );
-
-        RepositoryPolicy releasePolicy = remoteRepository.getPolicy( false ); 
-        sb.append( " releases: [enabled => " ).append( 
releasePolicy.isEnabled() );
-        sb.append( ", update => " ).append( releasePolicy.getUpdatePolicy() 
).append( "]\n" );
-
-        return sb.toString();
-    }
-    
-    
-    @Override
-    public int hashCode()
-    {
-        return remoteRepository.hashCode();
-    }
-
-    @Override
-    public boolean equals( Object obj )
-    {
-        if ( this == obj )
-        {
-            return true;
-        }
-        if ( obj == null )
-        {
-            return false;
-        }
-        if ( getClass() != obj.getClass() )
-        {
-            return false;
-        }
-        
-        Maven30ArtifactRepositoryAdapter other = 
(Maven30ArtifactRepositoryAdapter) obj;
-        if ( remoteRepository == null )
-        {
-            if ( other.remoteRepository != null )
-            {
-                return false;
-            }
-        }
-        else if ( !remoteRepository.equals( other.remoteRepository ) )
-        {
-            return false;
-        }
-        return true;
-    }
-}
diff --git 
a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven30CollectorResult.java
 
b/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven30CollectorResult.java
deleted file mode 100644
index 081dd66..0000000
--- 
a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven30CollectorResult.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package org.apache.maven.shared.transfer.dependencies.collect.internal;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.shared.transfer.dependencies.collect.CollectorResult;
-import org.sonatype.aether.collection.CollectResult;
-import org.sonatype.aether.graph.DependencyNode;
-import org.sonatype.aether.graph.DependencyVisitor;
-import org.sonatype.aether.repository.RemoteRepository;
-
-/**
- * CollectorResult wrapper around {@link CollectResult} 
- * 
- * @author Robert Scholte
- *
- */
-class Maven30CollectorResult implements CollectorResult
-{
-    private final CollectResult collectResult;
-    
-    /**
-     * @param collectResult {@link CollectorResult}
-     */
-    Maven30CollectorResult( CollectResult collectResult )
-    {
-        this.collectResult = collectResult;
-    }
-
-    @Override
-    public List<ArtifactRepository> getRemoteRepositories()
-    {
-        final Set<RemoteRepository> aetherRepositories = new HashSet<>();
-        
-        DependencyVisitor visitor = new DependencyVisitor()
-        {
-            @Override
-            public boolean visitEnter( DependencyNode node )
-            {
-                aetherRepositories.addAll( node.getRepositories() );
-                return true;
-            }
-            
-            @Override
-            public boolean visitLeave( DependencyNode node )
-            {
-                return true;
-            }
-        };
-        
-        collectResult.getRoot().accept( visitor );
-        
-        List<ArtifactRepository> mavenRepositories = new ArrayList<>( 
aetherRepositories.size() );
-        
-        for ( RemoteRepository aetherRepository : aetherRepositories )
-        {
-            mavenRepositories.add( new Maven30ArtifactRepositoryAdapter( 
aetherRepository ) );
-        }
-        
-        return mavenRepositories;
-    }
-
-}
diff --git 
a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven30DependencyCollector.java
 
b/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven30DependencyCollector.java
deleted file mode 100644
index 8a85003..0000000
--- 
a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven30DependencyCollector.java
+++ /dev/null
@@ -1,160 +0,0 @@
-package org.apache.maven.shared.transfer.dependencies.collect.internal;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.maven.RepositoryUtils;
-import org.apache.maven.artifact.handler.ArtifactHandler;
-import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
-import org.apache.maven.model.Model;
-import org.apache.maven.shared.transfer.dependencies.DependableCoordinate;
-import org.apache.maven.shared.transfer.dependencies.collect.CollectorResult;
-import 
org.apache.maven.shared.transfer.dependencies.collect.DependencyCollector;
-import 
org.apache.maven.shared.transfer.dependencies.collect.DependencyCollectorException;
-import org.sonatype.aether.RepositorySystem;
-import org.sonatype.aether.RepositorySystemSession;
-import org.sonatype.aether.artifact.Artifact;
-import org.sonatype.aether.artifact.ArtifactTypeRegistry;
-import org.sonatype.aether.collection.CollectRequest;
-import org.sonatype.aether.collection.DependencyCollectionException;
-import org.sonatype.aether.graph.Dependency;
-import org.sonatype.aether.repository.RemoteRepository;
-import org.sonatype.aether.util.artifact.DefaultArtifact;
-
-/**
- * Maven 3.0 implementation of the {@link DependencyCollector}
- *
- * @author Robert Scholte
- */
-class Maven30DependencyCollector implements MavenDependencyCollector
-{
-    private final RepositorySystem repositorySystem;
-
-    private final ArtifactHandlerManager artifactHandlerManager;
-
-    private final RepositorySystemSession session;
-
-    private final List<RemoteRepository> aetherRepositories;
-
-    Maven30DependencyCollector( RepositorySystem repositorySystem, 
ArtifactHandlerManager artifactHandlerManager,
-            RepositorySystemSession session, List<RemoteRepository> 
aetherRepositories )
-    {
-        super();
-        this.repositorySystem = repositorySystem;
-        this.artifactHandlerManager = artifactHandlerManager;
-        this.session = session;
-        this.aetherRepositories = aetherRepositories;
-    }
-
-    private static Dependency toDependency( org.apache.maven.model.Dependency 
mavenDependency,
-            ArtifactTypeRegistry typeRegistry ) throws 
DependencyCollectorException
-    {
-        Class<?>[] argClasses = new Class<?>[] 
{org.apache.maven.model.Dependency.class, ArtifactTypeRegistry.class};
-
-        Object[] args = new Object[] {mavenDependency, typeRegistry};
-
-        return Invoker.invoke( RepositoryUtils.class, "toDependency", 
argClasses, args );
-    }
-
-    @Override
-    public CollectorResult collectDependencies( 
org.apache.maven.model.Dependency root )
-            throws DependencyCollectorException
-    {
-        ArtifactTypeRegistry typeRegistry = Invoker.invoke( 
RepositoryUtils.class, "newArtifactTypeRegistry",
-                ArtifactHandlerManager.class, artifactHandlerManager );
-
-        CollectRequest request = new CollectRequest();
-        request.setRoot( toDependency( root, typeRegistry ) );
-
-        return collectDependencies( request );
-    }
-
-    @Override
-    public CollectorResult collectDependencies( DependableCoordinate root ) 
throws DependencyCollectorException
-    {
-        ArtifactHandler artifactHandler = 
artifactHandlerManager.getArtifactHandler( root.getType() );
-
-        String extension = artifactHandler != null ? 
artifactHandler.getExtension() : null;
-
-        Artifact aetherArtifact = new DefaultArtifact( root.getGroupId(), 
root.getArtifactId(), root.getClassifier(),
-                extension, root.getVersion() );
-
-        CollectRequest request = new CollectRequest();
-        request.setRoot( new Dependency( aetherArtifact, null ) );
-
-        return collectDependencies( request );
-    }
-
-    @Override
-    public CollectorResult collectDependencies( Model root ) throws 
DependencyCollectorException
-    {
-        // Are there examples where packaging and type are NOT in sync
-        ArtifactHandler artifactHandler = 
artifactHandlerManager.getArtifactHandler( root.getPackaging() );
-
-        String extension = artifactHandler != null ? 
artifactHandler.getExtension() : null;
-
-        Artifact aetherArtifact = new DefaultArtifact( root.getGroupId(), 
root.getArtifactId(), extension,
-                root.getVersion() );
-
-        CollectRequest request = new CollectRequest();
-        request.setRoot( new Dependency( aetherArtifact, null ) );
-
-        ArtifactTypeRegistry typeRegistry = Invoker.invoke( 
RepositoryUtils.class, "newArtifactTypeRegistry",
-                ArtifactHandlerManager.class, artifactHandlerManager );
-
-        List<Dependency> aetherDependencies = new ArrayList<>( 
root.getDependencies().size() );
-        for ( org.apache.maven.model.Dependency mavenDependency : 
root.getDependencies() )
-        {
-            aetherDependencies.add( toDependency( mavenDependency, 
typeRegistry ) );
-        }
-        request.setDependencies( aetherDependencies );
-
-        if ( root.getDependencyManagement() != null )
-        {
-            List<Dependency> aetherManagerDependencies = new ArrayList<>(
-                    root.getDependencyManagement().getDependencies().size() );
-
-            for ( org.apache.maven.model.Dependency mavenDependency : 
root.getDependencyManagement().getDependencies() )
-            {
-                aetherManagerDependencies.add( toDependency( mavenDependency, 
typeRegistry ) );
-            }
-
-            request.setManagedDependencies( aetherManagerDependencies );
-        }
-
-        return collectDependencies( request );
-    }
-
-    private CollectorResult collectDependencies( CollectRequest request ) 
throws DependencyCollectorException
-    {
-        request.setRepositories( aetherRepositories );
-
-        try
-        {
-            return new Maven30CollectorResult( 
repositorySystem.collectDependencies( session, request ) );
-        }
-        catch ( DependencyCollectionException e )
-        {
-            throw new DependencyCollectorException( e.getMessage(), e );
-        }
-    }
-}
diff --git 
a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven30DependencyNodeAdapter.java
 
b/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven30DependencyNodeAdapter.java
deleted file mode 100644
index 87a10f8..0000000
--- 
a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven30DependencyNodeAdapter.java
+++ /dev/null
@@ -1,163 +0,0 @@
-package org.apache.maven.shared.transfer.dependencies.collect.internal;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.maven.RepositoryUtils;
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import 
org.apache.maven.shared.transfer.dependencies.collect.DependencyCollectorException;
-import org.apache.maven.shared.transfer.graph.DependencyNode;
-import org.apache.maven.shared.transfer.graph.DependencyVisitor;
-import org.sonatype.aether.repository.RemoteRepository;
-
-/**
- * DependencyCollectorNode wrapper around {@link 
org.sonatype.aether.graph.DependencyNode}
- * 
- * @author Pim Moerenhout
- *
- */
-class Maven30DependencyNodeAdapter implements DependencyNode
-{
-
-    private org.sonatype.aether.graph.DependencyNode dependencyNode;
-
-    /**
-     * @param dependencyNode {@link org.sonatype.aether.graph.DependencyNode}
-     */
-    Maven30DependencyNodeAdapter( org.sonatype.aether.graph.DependencyNode 
dependencyNode )
-    {
-        this.dependencyNode = dependencyNode;
-    }
-
-    @Override
-    public Artifact getArtifact()
-    {
-        return getArtifact( dependencyNode.getDependency().getArtifact() );
-    }
-
-    @Override
-    public List<DependencyNode> getChildren()
-    {
-        List<org.sonatype.aether.graph.DependencyNode> aetherChildren = 
dependencyNode.getChildren();
-        List<DependencyNode> children = new ArrayList<>( aetherChildren.size() 
);
-        for ( org.sonatype.aether.graph.DependencyNode aetherChild : 
aetherChildren )
-        {
-            children.add( new Maven30DependencyNodeAdapter( aetherChild ) );
-        }
-        return children;
-    }
-
-    @Override
-    public List<ArtifactRepository> getRemoteRepositories()
-    {
-        List<RemoteRepository> aetherRepositories = 
dependencyNode.getRepositories();
-        List<ArtifactRepository> mavenRepositories = new ArrayList<>( 
aetherRepositories.size() );
-
-        for ( RemoteRepository aetherRepository : aetherRepositories )
-        {
-            mavenRepositories.add( new Maven30ArtifactRepositoryAdapter( 
aetherRepository ) );
-        }
-
-        return mavenRepositories;
-    }
-
-    @Override
-    public Boolean getOptional()
-    {
-        return dependencyNode.getDependency().isOptional();
-    }
-
-    @Override
-    public String getScope()
-    {
-        return dependencyNode.getDependency().getScope();
-    }
-
-    @Override
-    public boolean accept( DependencyVisitor visitor )
-    {
-        if ( visitor.visitEnter( this ) )
-        {
-            for ( org.sonatype.aether.graph.DependencyNode child : 
dependencyNode.getChildren() )
-            {
-                DependencyNode node = new Maven30DependencyNodeAdapter( child 
);
-                if ( !node.accept( visitor ) )
-                {
-                    break;
-                }
-            }
-        }
-
-        return visitor.visitLeave( this );
-    }
-
-    @Override
-    public int hashCode()
-    {
-        return dependencyNode.hashCode();
-    }
-
-    @Override
-    public boolean equals( Object obj )
-    {
-        if ( this == obj )
-        {
-            return true;
-        }
-        if ( obj == null )
-        {
-            return false;
-        }
-        if ( getClass() != obj.getClass() )
-        {
-            return false;
-        }
-
-        Maven30DependencyNodeAdapter other = (Maven30DependencyNodeAdapter) 
obj;
-        if ( dependencyNode == null )
-        {
-            if ( other.dependencyNode != null )
-            {
-                return false;
-            }
-        }
-        else if ( !dependencyNode.equals( other.dependencyNode ) )
-        {
-            return false;
-        }
-        return true;
-    }
-
-    private Artifact getArtifact( org.sonatype.aether.artifact.Artifact 
aetherArtifact )
-    {
-        try
-        {
-            return Invoker.invoke( RepositoryUtils.class, "toArtifact",
-                org.sonatype.aether.artifact.Artifact.class, aetherArtifact );
-        }
-        catch ( DependencyCollectorException e )
-        {
-            throw new RuntimeException( e );
-        }
-    }
-}
diff --git 
a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven31ArtifactRepositoryAdapter.java
 
b/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven31ArtifactRepositoryAdapter.java
index 854cf4a..3f01342 100644
--- 
a/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven31ArtifactRepositoryAdapter.java
+++ 
b/src/main/java/org/apache/maven/shared/transfer/dependencies/collect/internal/Maven31ArtifactRepositoryAdapter.java
@@ -19,6 +19,7 @@ package 
org.apache.maven.shared.transfer.dependencies.collect.internal;
  * under the License.
  */
 
+import java.util.Collections;
 import java.util.List;
 
 import org.apache.maven.artifact.Artifact;
@@ -41,6 +42,7 @@ class Maven31ArtifactRepositoryAdapter implements 
ArtifactRepository
 {
     
     private RemoteRepository remoteRepository;
+    private List<ArtifactRepository> mirroredRepositories = 
Collections.emptyList();
 
     /**
      * @param remoteRepository {@link RemoteRepository}
@@ -206,6 +208,33 @@ class Maven31ArtifactRepositoryAdapter implements 
ArtifactRepository
         throw new UnsupportedOperationException();
     }
 
+    /**
+     * @return the repositories mirrored by the actual one
+     * @since 3.0.3
+     */
+    @Override
+    public List<ArtifactRepository> getMirroredRepositories()
+    {
+        return mirroredRepositories;
+    }
+
+    /**
+     * @param mirroredRepositories the repositories that the actual one mirrors
+     * @since 3.0.3
+     */
+    @Override
+    public void setMirroredRepositories( List<ArtifactRepository> 
mirroredRepositories )
+    {
+        if ( mirroredRepositories != null )
+        {
+            this.mirroredRepositories = mirroredRepositories;
+        }
+        else
+        {
+            this.mirroredRepositories = Collections.emptyList();
+        }
+    }
+
     @Override
     public String toString()
     {
diff --git 
a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/DefaultDependencyResolver.java
 
b/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/DefaultDependencyResolver.java
index 7718c19..5d51e97 100644
--- 
a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/DefaultDependencyResolver.java
+++ 
b/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/DefaultDependencyResolver.java
@@ -39,6 +39,9 @@ import 
org.codehaus.plexus.component.repository.exception.ComponentLookupExcepti
 import org.codehaus.plexus.context.Context;
 import org.codehaus.plexus.context.ContextException;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.repository.RemoteRepository;
 
 /**
  *
@@ -97,23 +100,6 @@ class DefaultDependencyResolver implements 
DependencyResolver, Contextualizable
     }
 
     /**
-     * @return true if the current Maven version is Maven 3.1.
-     */
-    private boolean isMaven31()
-    {
-        try
-        {
-            // Maven 3.1 specific
-            Thread.currentThread().getContextClassLoader().loadClass( 
"org.eclipse.aether.artifact.Artifact" );
-            return true;
-        }
-        catch ( ClassNotFoundException e )
-        {
-            return false;
-        }
-    }
-
-    /**
      * Injects the Plexus content.
      *
      * @param context Plexus context to inject.
@@ -148,35 +134,15 @@ class DefaultDependencyResolver implements 
DependencyResolver, Contextualizable
     {
         ArtifactHandlerManager artifactHandlerManager = container.lookup( 
ArtifactHandlerManager.class );
 
-        if ( isMaven31() )
-        {
-            org.eclipse.aether.RepositorySystem m31RepositorySystem = 
container.lookup(
-                    org.eclipse.aether.RepositorySystem.class );
-
-            org.eclipse.aether.RepositorySystemSession session = 
Invoker.invoke( buildingRequest,
-                    "getRepositorySession" );
+        RepositorySystem m31RepositorySystem = container.lookup( 
RepositorySystem.class );
 
-            List<org.eclipse.aether.repository.RemoteRepository> 
aetherRepositories = Invoker.invoke(
-                    RepositoryUtils.class, "toRepos", List.class, 
buildingRequest.getRemoteRepositories() );
+        RepositorySystemSession session = Invoker.invoke( buildingRequest, 
"getRepositorySession" );
 
-            return new Maven31DependencyResolver( m31RepositorySystem, 
artifactHandlerManager, session,
-                    aetherRepositories );
-        }
-        else
-        {
-            org.sonatype.aether.RepositorySystem m30RepositorySystem = 
container.lookup(
-                    org.sonatype.aether.RepositorySystem.class );
+        List<RemoteRepository> aetherRepositories = Invoker.invoke(
+                RepositoryUtils.class, "toRepos", List.class, 
buildingRequest.getRemoteRepositories() );
 
-            org.sonatype.aether.RepositorySystemSession session = 
Invoker.invoke( buildingRequest,
-                    "getRepositorySession" );
-
-            List<org.sonatype.aether.repository.RemoteRepository> 
aetherRepositories = Invoker.invoke(
-                    RepositoryUtils.class, "toRepos", List.class, 
buildingRequest.getRemoteRepositories() );
-
-            return new Maven30DependencyResolver( m30RepositorySystem, 
artifactHandlerManager, session,
-                    aetherRepositories );
-
-        }
+        return new Maven31DependencyResolver( m31RepositorySystem, 
artifactHandlerManager, session,
+                aetherRepositories );
     }
 
     private void validateBuildingRequest( ProjectBuildingRequest 
buildingRequest )
diff --git 
a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven30ArtifactResult.java
 
b/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven30ArtifactResult.java
deleted file mode 100644
index b9f37d9..0000000
--- 
a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven30ArtifactResult.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.apache.maven.shared.transfer.dependencies.resolve.internal;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.apache.maven.RepositoryUtils;
-import 
org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolverException;
-import org.sonatype.aether.artifact.Artifact;
-import org.sonatype.aether.resolution.ArtifactResult;
-
-/**
- * {@link org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult} 
wrapper for {@link ArtifactResult}
- *
- * @author Robert Scholte
- * @since 3.0
- */
-class Maven30ArtifactResult implements 
org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult
-{
-    private final ArtifactResult artifactResult;
-
-    /**
-     * @param artifactResult {@link ArtifactResult}
-     */
-    Maven30ArtifactResult( ArtifactResult artifactResult )
-    {
-        this.artifactResult = artifactResult;
-    }
-
-    @Override
-    public org.apache.maven.artifact.Artifact getArtifact()
-    {
-        try
-        {
-            return Invoker.invoke( RepositoryUtils.class, "toArtifact", 
Artifact.class, artifactResult.getArtifact() );
-        }
-        catch ( DependencyResolverException e )
-        {
-            throw new RuntimeException( e );
-        }
-    }
-}
diff --git 
a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven30DependencyResolver.java
 
b/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven30DependencyResolver.java
deleted file mode 100644
index 031d604..0000000
--- 
a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven30DependencyResolver.java
+++ /dev/null
@@ -1,247 +0,0 @@
-package org.apache.maven.shared.transfer.dependencies.resolve.internal;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.maven.RepositoryUtils;
-import org.apache.maven.artifact.handler.ArtifactHandler;
-import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
-import org.apache.maven.model.DependencyManagement;
-import org.apache.maven.model.Model;
-import org.apache.maven.shared.artifact.filter.resolve.TransformableFilter;
-import 
org.apache.maven.shared.artifact.filter.resolve.transform.SonatypeAetherFilterTransformer;
-import org.apache.maven.shared.transfer.dependencies.DependableCoordinate;
-import 
org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolverException;
-import org.sonatype.aether.RepositorySystem;
-import org.sonatype.aether.RepositorySystemSession;
-import org.sonatype.aether.artifact.Artifact;
-import org.sonatype.aether.artifact.ArtifactType;
-import org.sonatype.aether.artifact.ArtifactTypeRegistry;
-import org.sonatype.aether.collection.CollectRequest;
-import org.sonatype.aether.collection.DependencyCollectionException;
-import org.sonatype.aether.graph.Dependency;
-import org.sonatype.aether.graph.DependencyFilter;
-import org.sonatype.aether.repository.RemoteRepository;
-import org.sonatype.aether.resolution.ArtifactResolutionException;
-import org.sonatype.aether.resolution.ArtifactResult;
-import org.sonatype.aether.util.artifact.DefaultArtifact;
-import org.sonatype.aether.util.artifact.DefaultArtifactType;
-
-/**
- *
- */
-class Maven30DependencyResolver implements MavenDependencyResolver
-{
-    private static final Class<?>[] ARG_CLASSES = new Class<?>[] 
{org.apache.maven.model.Dependency.class,
-            ArtifactTypeRegistry.class};
-    private final RepositorySystem repositorySystem;
-    private final ArtifactHandlerManager artifactHandlerManager;
-    private final RepositorySystemSession session;
-    private final List<RemoteRepository> aetherRepositories;
-
-    Maven30DependencyResolver( RepositorySystem repositorySystem, 
ArtifactHandlerManager artifactHandlerManager,
-            RepositorySystemSession session, List<RemoteRepository> 
aetherRepositories )
-    {
-        super();
-        this.repositorySystem = repositorySystem;
-        this.artifactHandlerManager = artifactHandlerManager;
-        this.session = session;
-        this.aetherRepositories = aetherRepositories;
-    }
-
-    /**
-     * Based on 
RepositoryUtils#toDependency(org.apache.maven.model.Dependency, 
ArtifactTypeRegistry)
-     *
-     * @param coordinate  {@link DependableCoordinate}
-     * @param stereotypes {@link 
org.eclipse.aether.artifact.ArtifactTypeRegistry
-     * @return as Aether Dependency
-     */
-    private static Dependency toDependency( DependableCoordinate coordinate, 
ArtifactTypeRegistry stereotypes )
-    {
-        ArtifactType stereotype = stereotypes.get( coordinate.getType() );
-        if ( stereotype == null )
-        {
-            stereotype = new DefaultArtifactType( coordinate.getType() );
-        }
-
-        Artifact artifact = new DefaultArtifact( coordinate.getGroupId(), 
coordinate.getArtifactId(),
-                coordinate.getClassifier(), null, coordinate.getVersion(), 
null, stereotype );
-
-        return new Dependency( artifact, null );
-    }
-
-    private static Dependency toDependency( org.apache.maven.model.Dependency 
mavenDependency,
-            ArtifactTypeRegistry typeRegistry ) throws 
DependencyResolverException
-    {
-        Object[] args = new Object[] {mavenDependency, typeRegistry};
-
-        return Invoker.invoke( RepositoryUtils.class, "toDependency", 
ARG_CLASSES, args );
-    }
-
-    @Override
-    // CHECKSTYLE_OFF: LineLength
-    public 
Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> 
resolveDependencies(
-            DependableCoordinate coordinate, TransformableFilter 
dependencyFilter )
-        // CHECKSTYLE_ON: LineLength
-            throws DependencyResolverException
-    {
-        ArtifactTypeRegistry typeRegistry = createTypeRegistry();
-
-        Dependency aetherRoot = toDependency( coordinate, typeRegistry );
-
-        CollectRequest request = new CollectRequest( aetherRoot, 
aetherRepositories );
-
-        return resolveDependencies( dependencyFilter, request );
-    }
-
-    private ArtifactTypeRegistry createTypeRegistry() throws 
DependencyResolverException
-    {
-        return Invoker.invoke( RepositoryUtils.class, 
"newArtifactTypeRegistry", ArtifactHandlerManager.class,
-                artifactHandlerManager );
-    }
-
-    @Override
-    // CHECKSTYLE_OFF: LineLength
-    public 
Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> 
resolveDependencies( Model model,
-            TransformableFilter dependencyFilter )
-        // CHECKSTYLE_ON: LineLength
-            throws DependencyResolverException
-    {
-        // Are there examples where packaging and type are NOT in sync
-        ArtifactHandler artifactHandler = 
artifactHandlerManager.getArtifactHandler( model.getPackaging() );
-
-        String extension = artifactHandler != null ? 
artifactHandler.getExtension() : null;
-
-        Artifact aetherArtifact = new DefaultArtifact( model.getGroupId(), 
model.getArtifactId(), extension,
-                model.getVersion() );
-
-        Dependency aetherRoot = new Dependency( aetherArtifact, null );
-
-        CollectRequest request = new CollectRequest( aetherRoot, 
aetherRepositories );
-
-        request.setDependencies( resolveDependencies( model.getDependencies() 
) );
-
-        DependencyManagement mavenDependencyManagement = 
model.getDependencyManagement();
-        if ( mavenDependencyManagement != null )
-        {
-            request.setManagedDependencies( resolveDependencies( 
mavenDependencyManagement.getDependencies() ) );
-        }
-
-        return resolveDependencies( dependencyFilter, request );
-    }
-
-    /**
-     * @param mavenDependencies {@link org.apache.maven.model.Dependency} can 
be {@code null}.
-     * @return List of resolved dependencies.
-     * @throws DependencyResolverException in case of a failure of the 
typeRegistry error.
-     */
-    // CHECKSTYLE_OFF: LineLength
-    private List<Dependency> resolveDependencies( 
Collection<org.apache.maven.model.Dependency> mavenDependencies )
-            throws DependencyResolverException
-    // CHECKSTYLE_ON: LineLength
-    {
-        if ( mavenDependencies == null )
-        {
-            return Collections.emptyList();
-        }
-
-        ArtifactTypeRegistry typeRegistry = createTypeRegistry();
-
-        List<Dependency> aetherDependencies = new ArrayList<>( 
mavenDependencies.size() );
-
-        for ( org.apache.maven.model.Dependency mavenDependency : 
mavenDependencies )
-        {
-            aetherDependencies.add( toDependency( mavenDependency, 
typeRegistry ) );
-        }
-
-        return aetherDependencies;
-    }
-
-    @Override
-    // CHECKSTYLE_OFF: LineLength
-    public 
Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> 
resolveDependencies(
-            Collection<org.apache.maven.model.Dependency> mavenDependencies,
-            Collection<org.apache.maven.model.Dependency> 
managedMavenDependencies, TransformableFilter filter )
-        // CHECKSTYLE_ON: LineLength
-            throws DependencyResolverException
-    {
-
-        List<Dependency> aetherDependencies = resolveDependencies( 
mavenDependencies );
-
-        List<Dependency> aetherManagedDependencies = resolveDependencies( 
managedMavenDependencies );
-
-        CollectRequest request = new CollectRequest( aetherDependencies, 
aetherManagedDependencies,
-                aetherRepositories );
-
-        return resolveDependencies( filter, request );
-    }
-
-    // CHECKSTYLE_OFF: LineLength
-    private 
Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> 
resolveDependencies(
-            TransformableFilter dependencyFilter, CollectRequest request ) 
throws DependencyResolverException
-    // CHECKSTYLE_ON :LineLength
-    {
-        try
-        {
-            DependencyFilter depFilter = null;
-            if ( dependencyFilter != null )
-            {
-                depFilter = dependencyFilter.transform( new 
SonatypeAetherFilterTransformer() );
-            }
-
-            final List<ArtifactResult> dependencyResults = 
repositorySystem.resolveDependencies( session, request,
-                    depFilter );
-
-            // Keep it lazy! Often artifactsResults aren't used, so 
transforming up front is too expensive
-            return new 
Iterable<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult>()
-            {
-                @Override
-                public 
Iterator<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> 
iterator()
-                {
-                    // CHECKSTYLE_OFF: LineLength
-                    
Collection<org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult> 
artResults =
-                            new ArrayList<>(
-                            dependencyResults.size() );
-                    // CHECKSTYLE_ON: LineLength
-
-                    for ( ArtifactResult artifactResult : dependencyResults )
-                    {
-                        artResults.add( new Maven30ArtifactResult( 
artifactResult ) );
-                    }
-
-                    return artResults.iterator();
-                }
-            };
-        }
-        catch ( ArtifactResolutionException e )
-        {
-            throw new Maven30DependencyResolverException( e );
-        }
-        catch ( DependencyCollectionException e )
-        {
-            throw new Maven30DependencyResolverException( e );
-        }
-    }
-}
diff --git 
a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven30DependencyResolverException.java
 
b/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven30DependencyResolverException.java
deleted file mode 100644
index 699903b..0000000
--- 
a/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/internal/Maven30DependencyResolverException.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package org.apache.maven.shared.transfer.dependencies.resolve.internal;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.util.List;
-
-import 
org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolverException;
-import org.apache.maven.shared.transfer.dependencies.resolve.DependencyResult;
-import org.sonatype.aether.collection.DependencyCollectionException;
-import org.sonatype.aether.resolution.ArtifactResolutionException;
-
-/**
- * 
- * @author Robert Scholte
- *
- */
-class Maven30DependencyResolverException extends DependencyResolverException
-{
-    private DependencyCollectionException dce;
-    
-    protected Maven30DependencyResolverException( 
DependencyCollectionException e )
-    {
-        super( e );
-        this.dce = e;
-    }
-    
-    Maven30DependencyResolverException( ArtifactResolutionException e )
-    {
-        super( e );
-    }
-    
-    @Override
-    public DependencyResult getResult()
-    {
-        return new DependencyResult()
-        {
-            @Override
-            public List<Exception> getCollectorExceptions()
-            {
-                return dce.getResult().getExceptions();
-            }
-        };
-    }
-}
diff --git 
a/src/main/java/org/apache/maven/shared/transfer/metadata/internal/Maven30MetadataBridge.java
 
b/src/main/java/org/apache/maven/shared/transfer/metadata/internal/Maven30MetadataBridge.java
deleted file mode 100644
index fde00a8..0000000
--- 
a/src/main/java/org/apache/maven/shared/transfer/metadata/internal/Maven30MetadataBridge.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package org.apache.maven.shared.transfer.metadata.internal;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.io.File;
-
-import org.apache.maven.artifact.metadata.ArtifactMetadata;
-import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
-import org.sonatype.aether.metadata.Metadata;
-
-/**
- * A MetadataBridge for Maven 3.0
- * 
- * @author Robert Scholte
- *
- */
-public class Maven30MetadataBridge implements Metadata
-{
-    private ArtifactMetadata metadata;
-    
-    private File file;
-
-    public Maven30MetadataBridge( ArtifactMetadata metadata )
-    {
-        this.metadata = metadata;
-    }
-
-    @Override
-    public String getGroupId()
-    {
-        return emptify( metadata.getGroupId() );
-    }
-
-    @Override
-    public String getArtifactId()
-    {
-        return metadata.storedInGroupDirectory() ? "" : emptify( 
metadata.getArtifactId() );
-    }
-
-    @Override
-    public String getVersion()
-    {
-        return metadata.storedInArtifactVersionDirectory() ? emptify( 
metadata.getBaseVersion() ) : "";
-    }
-
-    @Override
-    public String getType()
-    {
-        return metadata.getRemoteFilename();
-    }
-
-    private String emptify( String string )
-    {
-        return ( string != null ) ? string : "";
-    }
-
-    @Override
-    public File getFile()
-    {
-        return file;
-    }
-    
-    @Override
-    public Maven30MetadataBridge setFile( File file )
-    {
-        this.file = file;
-        return this;
-    }
-
-    @Override
-    public Nature getNature()
-    {
-        if ( metadata instanceof RepositoryMetadata )
-        {
-            switch ( ( (RepositoryMetadata) metadata ).getNature() )
-            {
-                case RepositoryMetadata.RELEASE_OR_SNAPSHOT:
-                    return Nature.RELEASE_OR_SNAPSHOT;
-                case RepositoryMetadata.SNAPSHOT:
-                    return Nature.SNAPSHOT;
-                default:
-                    return Nature.RELEASE;
-            }
-        }
-        else
-        {
-            return Nature.RELEASE;
-        }
-    }
-}
diff --git 
a/src/main/java/org/apache/maven/shared/transfer/repository/internal/DefaultRepositoryManager.java
 
b/src/main/java/org/apache/maven/shared/transfer/repository/internal/DefaultRepositoryManager.java
index c29cc08..c1ee372 100644
--- 
a/src/main/java/org/apache/maven/shared/transfer/repository/internal/DefaultRepositoryManager.java
+++ 
b/src/main/java/org/apache/maven/shared/transfer/repository/internal/DefaultRepositoryManager.java
@@ -36,6 +36,8 @@ import 
org.codehaus.plexus.component.repository.exception.ComponentLookupExcepti
 import org.codehaus.plexus.context.Context;
 import org.codehaus.plexus.context.ContextException;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
 
 /**
  * 
@@ -120,68 +122,15 @@ class DefaultRepositoryManager
             throw new IllegalStateException( e.getMessage(), e );
         }
     }
-
-    /**
-     * @return true if the current Maven version is Maven 3.1.
-     */
-    private boolean isMaven31()
-    {
-        return canFindCoreClass( "org.eclipse.aether.artifact.Artifact" ); // 
Maven 3.1 specific
-    }
-
-    /**
-     * @return true if the current Maven version is Maven 3.0.2
-     */
-    private boolean isMaven302()
-    {
-        return canFindCoreClass( 
"org.sonatype.aether.spi.localrepo.LocalRepositoryManagerFactory" );
-    }
-
-    private boolean canFindCoreClass( String className )
-    {
-        try
-        {
-            Thread.currentThread().getContextClassLoader().loadClass( 
className );
-
-            return true;
-        }
-        catch ( ClassNotFoundException e )
-        {
-            return false;
-        }
-    }
     
     private MavenRepositoryManager getMavenRepositoryManager( 
ProjectBuildingRequest buildingRequest )
         throws ComponentLookupException, RepositoryManagerException
     {
-        if ( isMaven31() )
-        {
-            org.eclipse.aether.RepositorySystem m31RepositorySystem =
-                            container.lookup( 
org.eclipse.aether.RepositorySystem.class );
+        RepositorySystem m31RepositorySystem = container.lookup( 
RepositorySystem.class );
 
-            org.eclipse.aether.RepositorySystemSession session = 
Invoker.invoke( buildingRequest,
-                    "getRepositorySession" );
+        RepositorySystemSession session = Invoker.invoke( buildingRequest, 
"getRepositorySession" );
 
-            return new Maven31RepositoryManager( m31RepositorySystem, session 
);
-        }
-        else
-        {
-            org.sonatype.aether.RepositorySystem m30RepositorySystem =
-                container.lookup( org.sonatype.aether.RepositorySystem.class );
-
-            org.sonatype.aether.RepositorySystemSession session = 
Invoker.invoke( buildingRequest,
-                    "getRepositorySession" );
-            
-            if ( isMaven302() )
-            {
-                return new Maven302RepositoryManager( m30RepositorySystem, 
session );
-                
-            }
-            else
-            {
-                return new Maven30RepositoryManager( m30RepositorySystem, 
session );
-            }
-        }
+        return new Maven31RepositoryManager( m31RepositorySystem, session );
     }
     
     public void contextualize( Context context ) throws ContextException
diff --git 
a/src/main/java/org/apache/maven/shared/transfer/repository/internal/Maven302RepositoryManager.java
 
b/src/main/java/org/apache/maven/shared/transfer/repository/internal/Maven302RepositoryManager.java
deleted file mode 100644
index 29178f4..0000000
--- 
a/src/main/java/org/apache/maven/shared/transfer/repository/internal/Maven302RepositoryManager.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package org.apache.maven.shared.transfer.repository.internal;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.sonatype.aether.RepositorySystem;
-import org.sonatype.aether.RepositorySystemSession;
-import org.sonatype.aether.repository.LocalRepository;
-
-/**
- * 
- */
-class Maven302RepositoryManager
-    extends Maven30RepositoryManager
-{
-    Maven302RepositoryManager( RepositorySystem repositorySystem, 
RepositorySystemSession session )
-    {
-        super( repositorySystem, session );
-    }
-
-    /**
-     * Aether-1.9+ (i.e. M3.0.2+) expects "default", not "enhanced" as 
repositoryType
-     */
-    @Override
-    protected String resolveRepositoryType( LocalRepository localRepository )
-    {
-        String repositoryType;
-        if ( "enhanced".equals( localRepository.getContentType() ) )
-        {
-            repositoryType = "default";
-        }
-        else
-        {
-            // this should be "simple"
-            repositoryType = localRepository.getContentType();
-        }
-        return repositoryType;
-    }
-}
diff --git 
a/src/main/java/org/apache/maven/shared/transfer/repository/internal/Maven30RepositoryManager.java
 
b/src/main/java/org/apache/maven/shared/transfer/repository/internal/Maven30RepositoryManager.java
deleted file mode 100644
index b7b9214..0000000
--- 
a/src/main/java/org/apache/maven/shared/transfer/repository/internal/Maven30RepositoryManager.java
+++ /dev/null
@@ -1,172 +0,0 @@
-package org.apache.maven.shared.transfer.repository.internal;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.io.File;
-
-import org.apache.maven.RepositoryUtils;
-import org.apache.maven.artifact.metadata.ArtifactMetadata;
-import org.apache.maven.project.DefaultProjectBuildingRequest;
-import org.apache.maven.project.ProjectBuildingRequest;
-import org.apache.maven.shared.transfer.artifact.ArtifactCoordinate;
-import org.apache.maven.shared.transfer.repository.RepositoryManagerException;
-import org.sonatype.aether.RepositorySystem;
-import org.sonatype.aether.RepositorySystemSession;
-import org.sonatype.aether.artifact.Artifact;
-import org.sonatype.aether.metadata.Metadata;
-import org.sonatype.aether.metadata.Metadata.Nature;
-import org.sonatype.aether.repository.LocalRepository;
-import org.sonatype.aether.repository.LocalRepositoryManager;
-import org.sonatype.aether.util.DefaultRepositoryCache;
-import org.sonatype.aether.util.DefaultRepositorySystemSession;
-import org.sonatype.aether.util.artifact.DefaultArtifact;
-import org.sonatype.aether.util.metadata.DefaultMetadata;
-
-/**
- * 
- */
-class Maven30RepositoryManager
-    implements MavenRepositoryManager
-{
-    private final RepositorySystem repositorySystem;
-
-    private final RepositorySystemSession session;
-    
-    Maven30RepositoryManager( RepositorySystem repositorySystem, 
RepositorySystemSession session )
-    {
-        this.repositorySystem = repositorySystem;
-        this.session = session;
-    }
-
-    @Override
-    public String getPathForLocalArtifact( org.apache.maven.artifact.Artifact 
mavenArtifact )
-    {
-        Artifact aetherArtifact;
-
-        // LRM.getPathForLocalArtifact() won't throw an Exception, so 
translate reflection error to RuntimeException
-        try
-        {
-            aetherArtifact = (Artifact) Invoker.invoke( RepositoryUtils.class, 
"toArtifact",
-                                                        
org.apache.maven.artifact.Artifact.class, mavenArtifact );
-        }
-        catch ( RepositoryManagerException e )
-        {
-            throw new RuntimeException( e.getMessage(), e );
-        }
-
-        return session.getLocalRepositoryManager().getPathForLocalArtifact( 
aetherArtifact );
-    }
-
-    @Override
-    public String getPathForLocalArtifact( ArtifactCoordinate coordinate )
-    {
-        Artifact aetherArtifact = toArtifact( coordinate );
-
-        // LRM.getPathForLocalArtifact() won't throw an Exception, so 
translate reflection error to RuntimeException
-
-        return session.getLocalRepositoryManager().getPathForLocalArtifact( 
aetherArtifact );
-    }
-
-    @Override
-    public String getPathForLocalMetadata( ArtifactMetadata metadata )
-    {
-        Metadata aetherMetadata =
-            new DefaultMetadata( metadata.getGroupId(),
-                                 metadata.storedInGroupDirectory() ? null : 
metadata.getArtifactId(),
-                                 metadata.storedInArtifactVersionDirectory() ? 
metadata.getBaseVersion() : null,
-                                 "maven-metadata.xml", 
Nature.RELEASE_OR_SNAPSHOT );
-
-        return session.getLocalRepositoryManager().getPathForLocalMetadata( 
aetherMetadata );
-    }
-    
-    @Override
-    public ProjectBuildingRequest setLocalRepositoryBasedir( 
ProjectBuildingRequest buildingRequest, File basedir )
-    {
-        ProjectBuildingRequest newRequest = new DefaultProjectBuildingRequest( 
buildingRequest );
-
-        RepositorySystemSession session;
-        try
-        {
-            session = Invoker.invoke( buildingRequest, "getRepositorySession" 
);
-        }
-        catch ( RepositoryManagerException e )
-        {
-            throw new RuntimeException( e.getMessage(), e );
-        }
-
-        // "clone" session and replace localRepository
-        DefaultRepositorySystemSession newSession = new 
DefaultRepositorySystemSession( session );
-
-        // Clear cache, since we're using a new local repository
-        newSession.setCache( new DefaultRepositoryCache() );
-
-        // keep same repositoryType
-        String repositoryType = resolveRepositoryType( 
session.getLocalRepository() );
-
-        LocalRepositoryManager localRepositoryManager =
-            repositorySystem.newLocalRepositoryManager( new LocalRepository( 
basedir, repositoryType ) );
-
-        newSession.setLocalRepositoryManager( localRepositoryManager );
-
-        try
-        {
-            Invoker.invoke( newRequest, "setRepositorySession", 
RepositorySystemSession.class, newSession );
-        }
-        catch ( RepositoryManagerException e )
-        {
-            throw new RuntimeException( e.getMessage(), e );
-        }
-
-        return newRequest;
-    }
-
-    @Override
-    public File getLocalRepositoryBasedir()
-    {
-        return session.getLocalRepository().getBasedir();
-    }
-
-    /**
-     * @param localRepository {@link LocalRepository}
-     * @return the resolved type.
-     */
-    protected String resolveRepositoryType( LocalRepository localRepository )
-    {
-        return localRepository.getContentType();
-    }
-
-    /**
-     * @param coordinate {@link ArtifactCoordinate}
-     * @return {@link Artifact}
-     */
-    protected Artifact toArtifact( ArtifactCoordinate coordinate )
-    {
-        if ( coordinate == null )
-        {
-            return null;
-        }
-
-        Artifact result =
-            new DefaultArtifact( coordinate.getGroupId(), 
coordinate.getArtifactId(), coordinate.getClassifier(),
-                                 coordinate.getExtension(), 
coordinate.getVersion() );
-
-        return result;
-    }
-}
diff --git 
a/src/main/java/org/apache/maven/shared/transfer/repository/internal/Maven31RepositoryManager.java
 
b/src/main/java/org/apache/maven/shared/transfer/repository/internal/Maven31RepositoryManager.java
index 6f486a0..8ca19c6 100644
--- 
a/src/main/java/org/apache/maven/shared/transfer/repository/internal/Maven31RepositoryManager.java
+++ 
b/src/main/java/org/apache/maven/shared/transfer/repository/internal/Maven31RepositoryManager.java
@@ -172,10 +172,7 @@ class Maven31RepositoryManager
             return null;
         }
 
-        Artifact result =
-            new DefaultArtifact( coordinate.getGroupId(), 
coordinate.getArtifactId(), coordinate.getClassifier(),
-                                 coordinate.getExtension(), 
coordinate.getVersion() );
-
-        return result;
+        return new DefaultArtifact( coordinate.getGroupId(), 
coordinate.getArtifactId(), coordinate.getClassifier(),
+                             coordinate.getExtension(), 
coordinate.getVersion() );
     }
 }
diff --git a/src/site/apt/index.apt.vm b/src/site/apt/index.apt.vm
index 1c729a6..034470d 100644
--- a/src/site/apt/index.apt.vm
+++ b/src/site/apt/index.apt.vm
@@ -29,7 +29,7 @@
 ${project.name}
 
   The Maven Artifact Transfer Component is a library
-  to install, deploy and resolve artifacts in Maven 3.
+  to install, deploy and resolve artifacts in Maven 3.1+
   
   The {{{./comparison.html} comparison shows}} the differences between
   a dependency, an artifact, and a Maven project.
diff --git 
a/src/test/java/org/apache/maven/shared/transfer/artifact/deploy/internal/DefaultArtifactDeployerTest.java
 
b/src/test/java/org/apache/maven/shared/transfer/artifact/deploy/internal/DefaultArtifactDeployerTest.java
index 14ce5c4..d5e55b3 100644
--- 
a/src/test/java/org/apache/maven/shared/transfer/artifact/deploy/internal/DefaultArtifactDeployerTest.java
+++ 
b/src/test/java/org/apache/maven/shared/transfer/artifact/deploy/internal/DefaultArtifactDeployerTest.java
@@ -19,20 +19,19 @@ package 
org.apache.maven.shared.transfer.artifact.deploy.internal;
  * under the License.
  */
 
-import static org.mockito.Mockito.mock;
-
-import java.util.Collections;
-
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.project.ProjectBuildingRequest;
 import org.apache.maven.shared.transfer.artifact.deploy.ArtifactDeployer;
 import 
org.apache.maven.shared.transfer.artifact.deploy.ArtifactDeployerException;
-import 
org.apache.maven.shared.transfer.artifact.deploy.internal.DefaultArtifactDeployer;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 
+import java.util.Collections;
+
+import static org.mockito.Mockito.mock;
+
 /**
  * Check the parameter contracts which have been made based on the interface 
{@link ArtifactDeployer}.
  * 
diff --git 
a/src/test/java/org/apache/maven/shared/transfer/artifact/install/internal/Maven30ArtifactInstallerTest.java
 
b/src/test/java/org/apache/maven/shared/transfer/artifact/install/internal/Maven30ArtifactInstallerTest.java
deleted file mode 100644
index 19d1939..0000000
--- 
a/src/test/java/org/apache/maven/shared/transfer/artifact/install/internal/Maven30ArtifactInstallerTest.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package org.apache.maven.shared.transfer.artifact.install.internal;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.io.File;
-import java.util.Arrays;
-import java.util.Collection;
-
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.DefaultArtifact;
-import org.apache.maven.artifact.handler.DefaultArtifactHandler;
-import org.apache.maven.project.DefaultProjectBuildingRequest;
-import org.apache.maven.repository.internal.MavenRepositorySystemSession;
-import 
org.apache.maven.shared.transfer.artifact.install.internal.Maven30ArtifactInstaller;
-import org.codehaus.plexus.PlexusTestCase;
-import org.sonatype.aether.RepositorySystem;
-import org.sonatype.aether.impl.internal.SimpleLocalRepositoryManager;
-
-public class Maven30ArtifactInstallerTest extends PlexusTestCase
-{
-    private final File localRepo = new File( "target/tests/local-repo" );
-    
-    private RepositorySystem repositorySystem;
-
-    @Override
-    public void setUp() throws Exception
-    {
-        super.setUp();
-        repositorySystem = lookup( RepositorySystem.class );
-    }
-
-    public void testInstall() throws Exception
-    {
-        DefaultProjectBuildingRequest buildingRequest = new 
DefaultProjectBuildingRequest();
-        MavenRepositorySystemSession repositorySession = new 
MavenRepositorySystemSession();
-        repositorySession.setLocalRepositoryManager( new 
SimpleLocalRepositoryManager( localRepo ) );
-        buildingRequest.setRepositorySession( repositorySession );
-        
-        DefaultArtifactHandler artifactHandler = new DefaultArtifactHandler();
-        artifactHandler.setExtension( "EXTENSION" );
-
-        File artifactsDirectory = new File( "target/tests/artifacts" );
-        artifactsDirectory.mkdirs();
-        File tmpFile = File.createTempFile( "test-install", ".jar", 
artifactsDirectory );
-        
-        DefaultArtifact artifact = new DefaultArtifact( "GROUPID", 
"ARTIFACTID", "VERSION", "compile", "jar", null, artifactHandler );
-        artifact.setFile( tmpFile );
-        DefaultArtifact artifactWithClassifier = new DefaultArtifact( 
"GROUPID", "ARTIFACTID", "VERSION", "compile", "jar", "CLASSIFIER", 
artifactHandler );
-        artifactWithClassifier.setFile( tmpFile );
-        
-        Collection<Artifact> mavenArtifacts = Arrays.<Artifact>asList( 
artifact, artifactWithClassifier );
-        
-        MavenArtifactInstaller installer = new Maven30ArtifactInstaller( 
repositorySystem, repositorySession );
-        installer.install( mavenArtifacts );
-        
-        assertTrue( new File( localRepo, 
"GROUPID/ARTIFACTID/VERSION/ARTIFACTID-VERSION.EXTENSION" ).exists() );
-        assertTrue( new File( localRepo, 
"GROUPID/ARTIFACTID/VERSION/ARTIFACTID-VERSION-CLASSIFIER.EXTENSION" ).exists() 
);
-        assertTrue( new File( localRepo, 
"GROUPID/ARTIFACTID/maven-metadata-local.xml" ).exists() ); //??
-    }
-}
diff --git 
a/src/test/java/org/apache/maven/shared/transfer/repository/internal/Maven30RepositoryManagerTest.java
 
b/src/test/java/org/apache/maven/shared/transfer/repository/internal/Maven30RepositoryManagerTest.java
deleted file mode 100644
index 6e20cb4..0000000
--- 
a/src/test/java/org/apache/maven/shared/transfer/repository/internal/Maven30RepositoryManagerTest.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package org.apache.maven.shared.transfer.repository.internal;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.io.File;
-
-import org.apache.maven.project.DefaultProjectBuildingRequest;
-import org.apache.maven.project.ProjectBuildingRequest;
-import org.apache.maven.repository.internal.MavenRepositorySystemSession;
-import 
org.apache.maven.shared.transfer.repository.internal.Maven30RepositoryManager;
-import org.codehaus.plexus.PlexusTestCase;
-import org.sonatype.aether.RepositorySystem;
-import org.sonatype.aether.impl.internal.EnhancedLocalRepositoryManager;
-import org.sonatype.aether.impl.internal.SimpleLocalRepositoryManager;
-
-public class Maven30RepositoryManagerTest extends PlexusTestCase
-{
-
-    private final File localRepo = new File( "target/tests/local-repo" );
-    
-    private RepositorySystem repositorySystem;
-
-    @Override
-    public void setUp() throws Exception
-    {
-        super.setUp();
-        repositorySystem = lookup( RepositorySystem.class );
-    }
-    
-    public void testSetLocalRepositoryBasedirSimple()
-    {
-        DefaultProjectBuildingRequest buildingRequest = new 
DefaultProjectBuildingRequest();
-        MavenRepositorySystemSession repositorySession = new 
MavenRepositorySystemSession();
-        repositorySession.setLocalRepositoryManager( new 
SimpleLocalRepositoryManager( localRepo ) );
-        buildingRequest.setRepositorySession( repositorySession );
-
-        File basedir = new File( "NEW/LOCAL/REPO" );
-        
-        Maven30RepositoryManager repositoryManager =
-            new Maven30RepositoryManager( repositorySystem, 
buildingRequest.getRepositorySession() );
-        
-        ProjectBuildingRequest newBuildingRequest = 
repositoryManager.setLocalRepositoryBasedir( buildingRequest, basedir );
-        
-        assertEquals( basedir.getAbsoluteFile(), 
newBuildingRequest.getRepositorySession().getLocalRepository().getBasedir() );
-        
-    }
-
-    public void testSetLocalRepositoryBasedirEnhanced()
-    {
-        DefaultProjectBuildingRequest buildingRequest = new 
DefaultProjectBuildingRequest();
-        MavenRepositorySystemSession repositorySession = new 
MavenRepositorySystemSession();
-        repositorySession.setLocalRepositoryManager( new 
EnhancedLocalRepositoryManager( localRepo ) );
-        buildingRequest.setRepositorySession( repositorySession );
-
-        File basedir = new File( "NEW/LOCAL/REPO" );
-        
-        Maven30RepositoryManager repositoryManager =
-            new Maven30RepositoryManager( repositorySystem, 
buildingRequest.getRepositorySession() );
-        
-        ProjectBuildingRequest newBuildingRequest = 
repositoryManager.setLocalRepositoryBasedir( buildingRequest, basedir );
-        
-        assertEquals( basedir.getAbsoluteFile(), 
newBuildingRequest.getRepositorySession().getLocalRepository().getBasedir() );
-        
-    }
-
-}

Reply via email to