You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by gn...@apache.org on 2022/03/08 10:48:09 UTC

[maven] 02/03: Add runtime support

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

gnodet pushed a commit to branch mvn4
in repository https://gitbox.apache.org/repos/asf/maven.git

commit 9343d03d59885f17aeb6fa40a60925229f8198f5
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Mon Mar 7 22:49:47 2022 +0100

    Add runtime support
---
 .../main/java/org/apache/maven/api/Project.java    |   2 +
 .../apache/maven/api/services/ArtifactManager.java |  15 ++-
 .../apache/maven/api/services/ProjectDeployer.java |  69 ----------
 .../api/services/ProjectDeployerException.java     |  37 ------
 .../maven/api/services/ProjectDeployerRequest.java | 134 -------------------
 .../maven/api/services/ProjectInstaller.java       |  79 ------------
 .../api/services/ProjectInstallerException.java    |  37 ------
 .../api/services/ProjectInstallerRequest.java      | 101 ---------------
 .../apache/maven/api/services/ProjectManager.java  |  14 +-
 .../apache/maven/impl/DefaultProjectDeployer.java  | 142 ---------------------
 .../apache/maven/impl/DefaultProjectInstaller.java |  77 -----------
 maven-core/pom.xml                                 |   4 +
 .../main/java/org/apache/maven/DefaultMaven.java   |  10 +-
 .../org/apache/maven/execution/MavenSession.java   |  12 ++
 .../apache/maven/execution/MojoExecutionEvent.java |  11 +-
 .../maven/internal}/impl/DefaultArtifact.java      |   2 +-
 .../internal}/impl/DefaultArtifactDeployer.java    |   2 +-
 .../internal}/impl/DefaultArtifactFactory.java     |   2 +-
 .../internal}/impl/DefaultArtifactInstaller.java   |   2 +-
 .../internal/impl/DefaultArtifactManager.java      |  89 +++++++++++++
 .../internal}/impl/DefaultArtifactResolver.java    |   2 +-
 .../maven/internal}/impl/DefaultDependency.java    |   2 +-
 .../internal}/impl/DefaultDependencyCollector.java |   2 +-
 .../internal}/impl/DefaultDependencyFactory.java   |   2 +-
 .../internal}/impl/DefaultDependencyResolver.java  |   2 +-
 .../internal}/impl/DefaultLocalRepository.java     |   4 +-
 .../impl/DefaultLocalRepositoryManager.java        |  14 +-
 .../apache/maven/internal}/impl/DefaultNode.java   |   2 +-
 .../maven/internal}/impl/DefaultProject.java       |  15 ++-
 .../internal}/impl/DefaultProjectBuilder.java      |   2 +-
 .../maven/internal/impl/DefaultProjectManager.java |  99 ++++++++++++++
 .../internal}/impl/DefaultRemoteRepository.java    |   2 +-
 .../internal}/impl/DefaultRepositoryFactory.java   |   2 +-
 .../maven/internal}/impl/DefaultSession.java       |  82 ++++++------
 .../maven/internal/impl/DefaultSessionFactory.java |  67 ++++++++++
 .../internal}/impl/DefaultToolchainManager.java    |   2 +-
 .../maven/internal}/impl/MappedCollection.java     |   2 +-
 .../apache/maven/internal}/impl/MappedList.java    |   2 +-
 .../lifecycle/internal/LifecycleModuleBuilder.java |   2 +
 .../maven/plugin/DefaultBuildPluginManager.java    |  37 ++++--
 .../plugin/PluginParameterExpressionEvaluator.java |   9 +-
 .../session/scope/internal/SessionScopeModule.java |   2 +
 .../main/resources/META-INF/maven/extension.xml    |   2 +
 .../org/apache/maven/internal}/impl/TestApi.java   |  16 +--
 .../maven/internal}/impl/TestArtifactHandler.java  |   2 +-
 .../maven/internal}/impl/TestRepositorySystem.java |   2 +-
 .../DefaultToolchainManagerPrivateTest.java        |  11 ++
 .../test/resources/apiv4-repo}/1.0/jdom-1.0.jar    | Bin
 .../resources/apiv4-repo}/1.0/jdom-1.0.jar.sha1    |   0
 .../test/resources/apiv4-repo}/1.0/jdom-1.0.pom    |   0
 .../resources/apiv4-repo}/1.0/jdom-1.0.pom.sha1    |   0
 .../apiv4-repo}/1.1/xml-im-exporter-1.1.jar        | Bin
 .../apiv4-repo}/1.1/xml-im-exporter-1.1.jar.sha1   |   0
 .../apiv4-repo}/1.1/xml-im-exporter-1.1.pom        |   0
 .../apiv4-repo}/1.1/xml-im-exporter-1.1.pom.sha1   |   0
 .../apiv4-repo}/2.0.2/commons-httpclient-2.0.2.jar | Bin
 .../2.0.2/commons-httpclient-2.0.2.jar.sha1        |   0
 .../apiv4-repo}/2.0.2/commons-httpclient-2.0.2.pom |   0
 .../2.0.2/commons-httpclient-2.0.2.pom.sha1        |   0
 .../apiv4-repo}/2.1/slide-webdavlib-2.1.jar        | Bin
 .../apiv4-repo}/2.1/slide-webdavlib-2.1.jar.md5    |   0
 .../apiv4-repo}/2.1/slide-webdavlib-2.1.jar.sha1   |   0
 .../apiv4-repo}/2.1/slide-webdavlib-2.1.pom        |   0
 .../apiv4-repo}/2.1/slide-webdavlib-2.1.pom.md5    |   0
 .../apiv4-repo}/2.1/slide-webdavlib-2.1.pom.sha1   |   0
 .../junit-4.13.1-javadoc-resources.jar.lastUpdated |   0
 .../apiv4-repo}/4.13.1/junit-4.13.1-javadoc.jar    | Bin
 .../4.13.1/junit-4.13.1-javadoc.jar.sha1           |   0
 .../apiv4-repo}/4.13.1/junit-4.13.1-sources.jar    | Bin
 .../4.13.1/junit-4.13.1-sources.jar.sha1           |   0
 .../resources/apiv4-repo}/4.13.1/junit-4.13.1.jar  | Bin
 .../apiv4-repo}/4.13.1/junit-4.13.1.jar.sha1       |   0
 .../resources/apiv4-repo}/4.13.1/junit-4.13.1.pom  |   0
 .../apiv4-repo}/4.13.1/junit-4.13.1.pom.sha1       |   0
 .../1.0.3/commons-logging-1.0.3.jar                | Bin
 .../1.0.3/commons-logging-1.0.3.jar.sha1           |   0
 .../1.0.3/commons-logging-1.0.3.pom                |   0
 .../1.0.3/commons-logging-1.0.3.pom.sha1           |   0
 ...logging-1.0.4-javadoc-resources.jar.lastUpdated |   0
 .../1.0.4/commons-logging-1.0.4.jar                | Bin
 .../1.0.4/commons-logging-1.0.4.jar.sha1           |   0
 .../1.0.4/commons-logging-1.0.4.pom                |   0
 .../1.0.4/commons-logging-1.0.4.pom.sha1           |   0
 .../apiv4-repo}/org/apache/apache/3/apache-3.pom   |   0
 .../org/apache/apache/3/apache-3.pom.md5           |   0
 .../org/apache/apache/3/apache-3.pom.sha1          |   0
 .../3.0-SNAPSHOT/maven-artifact-3.0-SNAPSHOT.jar   | Bin
 .../maven-artifact-3.0-SNAPSHOT.jar.md5            |   0
 .../maven-artifact-3.0-SNAPSHOT.jar.sha1           |   0
 .../3.0-SNAPSHOT/maven-artifact-3.0-SNAPSHOT.pom   |   0
 .../maven-artifact-3.0-SNAPSHOT.pom.md5            |   0
 .../maven-artifact-3.0-SNAPSHOT.pom.sha1           |   0
 .../test/test-extension/1/test-extension-1.jar     | Bin
 .../test/test-extension/1/test-extension-1.pom     |   0
 .../test/test-extension/1/test-extension-1.pom.md5 |   0
 .../test-extension/1/test-extension-1.pom.sha1     |   0
 .../1/test-lifecycle-and-artifactHandler-1.jar     | Bin
 .../1/test-lifecycle-and-artifactHandler-1.pom     |   0
 .../1/test-lifecycle-and-artifactHandler-1.pom.md5 |   0
 .../test-lifecycle-and-artifactHandler-1.pom.sha1  |   0
 .../apache/maven/maven-parent/4/maven-parent-4.pom |   0
 .../maven/maven-parent/4/maven-parent-4.pom.md5    |   0
 .../maven/maven-parent/4/maven-parent-4.pom.sha1   |   0
 .../apache/maven/maven-parent/5/maven-parent-5.pom |   0
 .../maven/maven-parent/5/maven-parent-5.pom.md5    |   0
 .../maven/maven-parent/5/maven-parent-5.pom.sha1   |   0
 .../1.0-beta-2/wagon-provider-api-1.0-beta-2.jar   | Bin
 .../wagon-provider-api-1.0-beta-2.jar.md5          |   0
 .../wagon-provider-api-1.0-beta-2.jar.sha1         |   0
 .../1.0-beta-2/wagon-provider-api-1.0-beta-2.pom   |   0
 .../wagon-provider-api-1.0-beta-2.pom.md5          |   0
 .../wagon-provider-api-1.0-beta-2.pom.sha1         |   0
 .../1.0-beta-2/wagon-providers-1.0-beta-2.pom      |   0
 .../1.0-beta-2/wagon-providers-1.0-beta-2.pom.md5  |   0
 .../1.0-beta-2/wagon-providers-1.0-beta-2.pom.sha1 |   0
 .../1.0-beta-2/wagon-webdav-1.0-beta-2.jar         | Bin
 .../1.0-beta-2/wagon-webdav-1.0-beta-2.jar.md5     |   0
 .../1.0-beta-2/wagon-webdav-1.0-beta-2.jar.sha1    |   0
 .../1.0-beta-2/wagon-webdav-1.0-beta-2.pom         |   0
 .../1.0-beta-2/wagon-webdav-1.0-beta-2.pom.md5     |   0
 .../1.0-beta-2/wagon-webdav-1.0-beta-2.pom.sha1    |   0
 .../wagon/wagon/1.0-beta-2/wagon-1.0-beta-2.pom    |   0
 .../wagon/1.0-beta-2/wagon-1.0-beta-2.pom.md5      |   0
 .../wagon/1.0-beta-2/wagon-1.0-beta-2.pom.sha1     |   0
 .../plexus-active-collections-1.0-beta-1.jar       | Bin
 .../plexus-active-collections-1.0-beta-1.jar.md5   |   0
 .../plexus-active-collections-1.0-beta-1.jar.sha1  |   0
 .../plexus-active-collections-1.0-beta-1.pom       |   0
 .../plexus-active-collections-1.0-beta-1.pom.md5   |   0
 .../plexus-active-collections-1.0-beta-1.pom.sha1  |   0
 .../plexus-classworlds-1.2-alpha-10.jar            | Bin
 .../plexus-classworlds-1.2-alpha-10.jar.md5        |   0
 .../plexus-classworlds-1.2-alpha-10.jar.sha1       |   0
 .../plexus-classworlds-1.2-alpha-10.pom            |   0
 .../plexus-classworlds-1.2-alpha-10.pom.md5        |   0
 .../plexus-classworlds-1.2-alpha-10.pom.sha1       |   0
 .../1.2-alpha-7/plexus-classworlds-1.2-alpha-7.jar | Bin
 .../plexus-classworlds-1.2-alpha-7.jar.md5         |   0
 .../plexus-classworlds-1.2-alpha-7.jar.sha1        |   0
 .../1.2-alpha-7/plexus-classworlds-1.2-alpha-7.pom |   0
 .../plexus-classworlds-1.2-alpha-7.pom.md5         |   0
 .../plexus-classworlds-1.2-alpha-7.pom.sha1        |   0
 .../plexus-component-api-1.0-alpha-16.jar          | Bin
 .../plexus-component-api-1.0-alpha-16.jar.md5      |   0
 .../plexus-component-api-1.0-alpha-16.jar.sha1     |   0
 .../plexus-component-api-1.0-alpha-16.pom          |   0
 .../plexus-component-api-1.0-alpha-16.pom.md5      |   0
 .../plexus-component-api-1.0-alpha-16.pom.sha1     |   0
 .../plexus-component-api-1.0-alpha-32.jar          | Bin
 .../plexus-component-api-1.0-alpha-32.jar.md5      |   0
 .../plexus-component-api-1.0-alpha-32.jar.sha1     |   0
 .../plexus-component-api-1.0-alpha-32.pom          |   0
 .../plexus-component-api-1.0-alpha-32.pom.md5      |   0
 .../plexus-component-api-1.0-alpha-32.pom.sha1     |   0
 .../1.1.6/plexus-components-1.1.6.pom              |   0
 .../1.1.6/plexus-components-1.1.6.pom.md5          |   0
 .../1.1.6/plexus-components-1.1.6.pom.sha1         |   0
 .../plexus-container-default-1.0-alpha-16.jar      | Bin
 .../plexus-container-default-1.0-alpha-16.jar.md5  |   0
 .../plexus-container-default-1.0-alpha-16.jar.sha1 |   0
 .../plexus-container-default-1.0-alpha-16.pom      |   0
 .../plexus-container-default-1.0-alpha-16.pom.md5  |   0
 .../plexus-container-default-1.0-alpha-16.pom.sha1 |   0
 .../plexus-container-default-1.0-alpha-32.jar      | Bin
 .../plexus-container-default-1.0-alpha-32.jar.md5  |   0
 .../plexus-container-default-1.0-alpha-32.jar.sha1 |   0
 .../plexus-container-default-1.0-alpha-32.pom      |   0
 .../plexus-container-default-1.0-alpha-32.pom.md5  |   0
 .../plexus-container-default-1.0-alpha-32.pom.sha1 |   0
 .../plexus-containers-1.0-alpha-16.pom             |   0
 .../plexus-containers-1.0-alpha-16.pom.md5         |   0
 .../plexus-containers-1.0-alpha-16.pom.sha1        |   0
 .../plexus-containers-1.0-alpha-32.pom             |   0
 .../plexus-containers-1.0-alpha-32.pom.md5         |   0
 .../plexus-containers-1.0-alpha-32.pom.sha1        |   0
 .../plexus-utils/1.0.4/plexus-utils-1.0.4.jar      | Bin
 .../plexus-utils/1.0.4/plexus-utils-1.0.4.jar.sha1 |   0
 .../plexus-utils/1.0.4/plexus-utils-1.0.4.pom      |   0
 .../plexus-utils/1.0.4/plexus-utils-1.0.4.pom.sha1 |   0
 .../plexus/plexus-utils/1.1/plexus-utils-1.1.jar   | Bin
 .../plexus-utils/1.1/plexus-utils-1.1.jar.md5      |   0
 .../plexus-utils/1.1/plexus-utils-1.1.jar.sha1     |   0
 .../plexus/plexus-utils/1.1/plexus-utils-1.1.pom   |   0
 .../plexus-utils/1.1/plexus-utils-1.1.pom.md5      |   0
 .../plexus-utils/1.1/plexus-utils-1.1.pom.sha1     |   0
 .../plexus-utils/1.4.5/plexus-utils-1.4.5.jar      | Bin
 .../plexus-utils/1.4.5/plexus-utils-1.4.5.jar.md5  |   0
 .../plexus-utils/1.4.5/plexus-utils-1.4.5.jar.sha1 |   0
 .../plexus-utils/1.4.5/plexus-utils-1.4.5.pom      |   0
 .../plexus-utils/1.4.5/plexus-utils-1.4.5.pom.md5  |   0
 .../plexus-utils/1.4.5/plexus-utils-1.4.5.pom.sha1 |   0
 .../plexus/plexus/1.0.10/plexus-1.0.10.pom         |   0
 .../plexus/plexus/1.0.10/plexus-1.0.10.pom.md5     |   0
 .../plexus/plexus/1.0.10/plexus-1.0.10.pom.sha1    |   0
 .../plexus/plexus/1.0.11/plexus-1.0.11.pom         |   0
 .../plexus/plexus/1.0.11/plexus-1.0.11.pom.md5     |   0
 .../plexus/plexus/1.0.11/plexus-1.0.11.pom.sha1    |   0
 .../codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom  |   0
 .../plexus/plexus/1.0.4/plexus-1.0.4.pom.md5       |   0
 .../plexus/plexus/1.0.4/plexus-1.0.4.pom.sha1      |   0
 .../codehaus/plexus/plexus/1.0.8/plexus-1.0.8.pom  |   0
 .../plexus/plexus/1.0.8/plexus-1.0.8.pom.md5       |   0
 .../plexus/plexus/1.0.8/plexus-1.0.8.pom.sha1      |   0
 .../codehaus/plexus/plexus/1.0.9/plexus-1.0.9.pom  |   0
 .../plexus/plexus/1.0.9/plexus-1.0.9.pom.md5       |   0
 .../plexus/plexus/1.0.9/plexus-1.0.9.pom.sha1      |   0
 ...rest-core-1.3-javadoc-resources.jar.lastUpdated |   0
 .../1.3/hamcrest-core-1.3-javadoc.jar              | Bin
 .../1.3/hamcrest-core-1.3-javadoc.jar.sha1         |   0
 .../1.3/hamcrest-core-1.3-sources.jar              | Bin
 .../1.3/hamcrest-core-1.3-sources.jar.sha1         |   0
 .../hamcrest-core/1.3/hamcrest-core-1.3.jar        | Bin
 .../hamcrest-core/1.3/hamcrest-core-1.3.jar.sha1   |   0
 .../hamcrest-core/1.3/hamcrest-core-1.3.pom        |   0
 .../hamcrest-core/1.3/hamcrest-core-1.3.pom.sha1   |   0
 .../hamcrest-parent/1.3/hamcrest-parent-1.3.pom    |   0
 .../1.3/hamcrest-parent-1.3.pom.sha1               |   0
 .../maven/plugin/descriptor/MojoDescriptor.java    |  14 +-
 .../plugin/descriptor/PluginDescriptorBuilder.java |   7 +
 pom.xml                                            |   1 -
 220 files changed, 455 insertions(+), 796 deletions(-)

diff --git a/maven-core-api/src/main/java/org/apache/maven/api/Project.java b/maven-core-api/src/main/java/org/apache/maven/api/Project.java
index d8cb6f0..9fa9c79 100644
--- a/maven-core-api/src/main/java/org/apache/maven/api/Project.java
+++ b/maven-core-api/src/main/java/org/apache/maven/api/Project.java
@@ -68,4 +68,6 @@ public interface Project
     {
         return getModel().getId();
     }
+
+    boolean isExecutionRoot();
 }
diff --git a/maven-core-api/src/main/java/org/apache/maven/api/services/ArtifactManager.java b/maven-core-api/src/main/java/org/apache/maven/api/services/ArtifactManager.java
index a354458..949a50e 100644
--- a/maven-core-api/src/main/java/org/apache/maven/api/services/ArtifactManager.java
+++ b/maven-core-api/src/main/java/org/apache/maven/api/services/ArtifactManager.java
@@ -32,18 +32,19 @@ public interface ArtifactManager extends Service
 {
 
     /**
-     * Returns the path to the resolved file in the local repository
-     * if the artifact has been resolved.
-     *
-     * @return the path of the resolved artifact
+     * Returns the path of the file previously associated to this artifact
+     * or <code>Optional.empty()</code> if no path has been associated.
      */
     @Nonnull
-    Optional<Path> getPath( Artifact artifact );
+    Optional<Path> getPath( @Nonnull Artifact artifact );
 
-    void setPath( Artifact artifact, Path path );
+    /**
+     * Associates the given file path to the artifact.
+     */
+    void setPath( @Nonnull Artifact artifact, Path path );
 
     @Nonnull
-    Collection<Metadata> getAttachedMetadatas( Artifact artifact );
+    Collection<Metadata> getAttachedMetadatas( @Nonnull Artifact artifact );
 
     void attachMetadata( @Nonnull Artifact artifact, @Nonnull Metadata metadata );
 
diff --git a/maven-core-api/src/main/java/org/apache/maven/api/services/ProjectDeployer.java b/maven-core-api/src/main/java/org/apache/maven/api/services/ProjectDeployer.java
deleted file mode 100644
index 5f21e4c..0000000
--- a/maven-core-api/src/main/java/org/apache/maven/api/services/ProjectDeployer.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package org.apache.maven.api.services;
-
-/*
- * 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.api.RemoteRepository;
-import org.apache.maven.api.Session;
-import org.apache.maven.api.Project;
-
-/**
- * This defines the interface to deploy a single Maven Project.
- * 
- * @author Karl Heinz Marbaise <a href="mailto:khmarbaise@apache.org">khmarbaise@apache.org</a>
- */
-public interface ProjectDeployer extends Service
-{
-    /**
-     * This will deploy a single project which may contain several artifacts. Those artifacts will be deployed into the
-     * appropriate remote repository.
-     * 
-     * <pre class="java">
-     *  &#64;Parameter( defaultValue = "${session}", required = true, readonly = true )
-     *  MavenSession session;
-     *  &#64;Parameter( defaultValue = "${project}", required = true, readonly = true )
-     *  MavenProject project;
-     *  ..
-     *  &#64;Component
-     *  ProjectDeployer deployer;
-     *  ...
-     *  public void execute()
-     *  {
-     *    ProjectDeployerRequest pdr = 
-     *      new ProjectDeployerRequest()
-     *        .setProject( project );
-     *  
-     *    deployer.deploy( session.getProjectBuildingRequest(), pdr, artifactRepository );
-     *  }
-     * </pre>
-     * 
-     * @param request {@link ProjectDeployerRequest}
-     * @throws ProjectDeployerException in case of artifact could not correctly deployed.
-     * @throws IllegalArgumentException in case <code>buildingRequest</code> is <code>null</code>, <code>request</code>
-     *             is <code>null</code> or <code>artifactRepository</code> is <code>null</code>.
-     */
-    void deploy( ProjectDeployerRequest request )
-        throws ProjectDeployerException, IllegalArgumentException;
-
-    default void deploy( Session session, Project project, RemoteRepository repository )
-            throws ProjectDeployerException, IllegalArgumentException
-    {
-        deploy( ProjectDeployerRequest.build( session, project, repository ) );
-    }
-}
diff --git a/maven-core-api/src/main/java/org/apache/maven/api/services/ProjectDeployerException.java b/maven-core-api/src/main/java/org/apache/maven/api/services/ProjectDeployerException.java
deleted file mode 100644
index fd8ceb3..0000000
--- a/maven-core-api/src/main/java/org/apache/maven/api/services/ProjectDeployerException.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package org.apache.maven.api.services;
-
-/*
- * 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.
- */
-
-/**
- * The Exception class in case a resolving does not work.
- */
-public class ProjectDeployerException
-    extends MavenException
-{
-    /**
-     * @param message The message to give.
-     * @param e The {@link Exception}.
-     */
-    public ProjectDeployerException( String message, Exception e )
-    {
-        super( message, e );
-    }
-
-}
diff --git a/maven-core-api/src/main/java/org/apache/maven/api/services/ProjectDeployerRequest.java b/maven-core-api/src/main/java/org/apache/maven/api/services/ProjectDeployerRequest.java
deleted file mode 100644
index e343e86..0000000
--- a/maven-core-api/src/main/java/org/apache/maven/api/services/ProjectDeployerRequest.java
+++ /dev/null
@@ -1,134 +0,0 @@
-package org.apache.maven.api.services;
-
-/*
- * 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 javax.annotation.Nonnull;
-
-import org.apache.maven.api.Session;
-import org.apache.maven.api.Project;
-import org.apache.maven.api.RemoteRepository;
-
-public interface ProjectDeployerRequest
-{
-    @Nonnull
-    Session getSession();
-
-    @Nonnull
-    Project getProject();
-
-    @Nonnull
-    RemoteRepository getRepository();
-
-    int getRetryFailedDeploymentCount();
-
-    static ProjectDeployerRequest build( Session session, Project project, RemoteRepository repository )
-    {
-        return builder()
-                .session( session )
-                .project( project )
-                .repository( repository )
-                .build();
-    }
-
-    static ProjectDeployerRequestBuilder builder()
-    {
-        return new ProjectDeployerRequestBuilder();
-    }
-
-    class ProjectDeployerRequestBuilder
-    {
-        Session session;
-        Project project;
-        RemoteRepository repository;
-        int retryFailedDeploymentCount;
-
-        @Nonnull
-        public ProjectDeployerRequestBuilder session( @Nonnull Session session )
-        {
-            this.session = session;
-            return this;
-        }
-
-        @Nonnull
-        public ProjectDeployerRequestBuilder project( @Nonnull Project project )
-        {
-            this.project = project;
-            return this;
-        }
-
-        @Nonnull
-        public ProjectDeployerRequestBuilder repository( @Nonnull RemoteRepository repository )
-        {
-            this.repository = repository;
-            return this;
-        }
-
-        @Nonnull
-        public ProjectDeployerRequestBuilder retryFailedDeploymentCount( int retryFailedDeploymentCount )
-        {
-            this.retryFailedDeploymentCount = retryFailedDeploymentCount;
-            return this;
-        }
-
-        public ProjectDeployerRequest build()
-        {
-            return new DefaultProjectDeployerRequest( session, project, repository, retryFailedDeploymentCount );
-        }
-
-        private static class DefaultProjectDeployerRequest extends BaseRequest
-                implements ProjectDeployerRequest
-        {
-            private final Project project;
-            private final RemoteRepository repository;
-            private final int retryFailedDeploymentCount;
-
-            DefaultProjectDeployerRequest( @Nonnull Session session,
-                                           @Nonnull Project project,
-                                           @Nonnull RemoteRepository repository,
-                                           int retryFailedDeploymentCount )
-            {
-                super( session );
-                this.project = requireNonNull( project, "project" );
-                this.repository = requireNonNull( repository, "repository" );
-                this.retryFailedDeploymentCount = retryFailedDeploymentCount;
-            }
-
-            @Nonnull
-            @Override
-            public Project getProject()
-            {
-                return project;
-            }
-
-            @Nonnull
-            @Override
-            public RemoteRepository getRepository()
-            {
-                return repository;
-            }
-
-            @Override
-            public int getRetryFailedDeploymentCount()
-            {
-                return retryFailedDeploymentCount;
-            }
-        }
-    }
-}
diff --git a/maven-core-api/src/main/java/org/apache/maven/api/services/ProjectInstaller.java b/maven-core-api/src/main/java/org/apache/maven/api/services/ProjectInstaller.java
deleted file mode 100644
index 0095bed..0000000
--- a/maven-core-api/src/main/java/org/apache/maven/api/services/ProjectInstaller.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package org.apache.maven.api.services;
-
-/*
- * 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.api.Session;
-import org.apache.maven.api.Project;
-
-/**
- * This defines the interface to install a single Maven Project.
- * 
- * @author Karl Heinz Marbaise <a href="mailto:khmarbaise@apache.org">khmarbaise@apache.org</a>
- */
-public interface ProjectInstaller extends Service
-{
-    /**
-     * This will install a single project which may contain several artifacts. Those artifacts will be installed into
-     * the appropriate repository.
-     * 
-     * <pre class="java">
-     *  &#64;Parameter( defaultValue = "${session}", required = true, readonly = true )
-     *  private MavenSession session;
-     *  &#64;Parameter( defaultValue = "${project}", required = true, readonly = true )
-     *  private MavenProject project;
-     *  ..
-     *  &#64;Component
-     *  private ProjectInstaller installer;
-     *  ...
-     *  public void execute()
-     *  {
-     *    ProjectInstallerRequest pir =
-     *      new ProjectInstallerRequest()
-     *         .setProject( mavenProject );
-     * 
-     *    installer.install( session.getProjectBuildingRequest(), pir );
-     *  }
-     * </pre>
-     * 
-     * To set a different local repository than the current one in the Maven session, you can inject an instance of the
-     * <code>RepositoryManager</code> and set the path to the local repository, called <code>localRepositoryPath</code>,
-     * as such:
-     * 
-     * <pre class="java">
-     * &#64;Component
-     * private RepositoryManager repositoryManager;
-     * 
-     * buildingRequest = repositoryManager.setLocalRepositoryBasedir( buildingRequest, localRepositoryPath );
-     * </pre>
-     * 
-     * @param request {@link ProjectInstallerRequest}
-     * @throws ProjectInstallerException In case of problems to install artifacts.
-     * @throws IllegalArgumentException in case of parameter <code>projectBuildingRequest</code> is <code>null</code> or
-     *             parameter <code>projectInstallerRequest</code> is <code>null</code>.
-     */
-    void install( ProjectInstallerRequest request )
-        throws ProjectInstallerException, IllegalArgumentException;
-
-    default void install( Session session, Project project )
-        throws ProjectInstallerException, IllegalArgumentException
-    {
-        install( ProjectInstallerRequest.build( session, project ) );
-    }
-}
diff --git a/maven-core-api/src/main/java/org/apache/maven/api/services/ProjectInstallerException.java b/maven-core-api/src/main/java/org/apache/maven/api/services/ProjectInstallerException.java
deleted file mode 100644
index f1c160f..0000000
--- a/maven-core-api/src/main/java/org/apache/maven/api/services/ProjectInstallerException.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package org.apache.maven.api.services;
-
-/*
- * 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.
- */
-
-/**
- * The Exception class in case a resolving does not work.
- */
-public class ProjectInstallerException
-    extends MavenException
-{
-    /**
-     * @param message The message to give.
-     * @param e The {@link Exception}.
-     */
-    public ProjectInstallerException( String message, Exception e )
-    {
-        super( message, e );
-    }
-
-}
diff --git a/maven-core-api/src/main/java/org/apache/maven/api/services/ProjectInstallerRequest.java b/maven-core-api/src/main/java/org/apache/maven/api/services/ProjectInstallerRequest.java
deleted file mode 100644
index ca545b8..0000000
--- a/maven-core-api/src/main/java/org/apache/maven/api/services/ProjectInstallerRequest.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package org.apache.maven.api.services;
-
-/*
- * 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 javax.annotation.Nonnull;
-
-import org.apache.maven.api.Session;
-import org.apache.maven.api.Project;
-
-/**
- * @author Guillaume Nodet
- */
-
-public interface ProjectInstallerRequest
-{
-
-    @Nonnull
-    Session getSession();
-
-    @Nonnull
-    Project getProject();
-
-    @Nonnull
-    static ProjectInstallerRequest build( @Nonnull Session session, @Nonnull Project project )
-    {
-        return builder()
-                .session( session )
-                .project( project )
-                .build();
-    }
-
-    @Nonnull
-    static ProjectInstallerRequestBuilder builder()
-    {
-        return new ProjectInstallerRequestBuilder();
-    }
-
-    class ProjectInstallerRequestBuilder
-    {
-        Session session;
-        Project project;
-
-        @Nonnull
-        public ProjectInstallerRequestBuilder session( Session session )
-        {
-            this.session = session;
-            return this;
-        }
-
-        @Nonnull
-        public ProjectInstallerRequestBuilder project( Project project )
-        {
-            this.project = project;
-            return this;
-        }
-
-        @Nonnull
-        public ProjectInstallerRequest build()
-        {
-            return new DefaultProjectInstallerRequest( session, project );
-        }
-
-        private static class DefaultProjectInstallerRequest extends BaseRequest
-                implements ProjectInstallerRequest
-        {
-
-            final Project project;
-
-            DefaultProjectInstallerRequest( @Nonnull Session session, @Nonnull Project project )
-            {
-                super( session );
-                this.project = requireNonNull( project, "project" );
-            }
-
-            @Nonnull
-            @Override
-            public Project getProject()
-            {
-                return project;
-            }
-        }
-    }
-
-}
diff --git a/maven-core-api/src/main/java/org/apache/maven/api/services/ProjectManager.java b/maven-core-api/src/main/java/org/apache/maven/api/services/ProjectManager.java
index 8b6e96b..ccc58c2 100644
--- a/maven-core-api/src/main/java/org/apache/maven/api/services/ProjectManager.java
+++ b/maven-core-api/src/main/java/org/apache/maven/api/services/ProjectManager.java
@@ -30,6 +30,7 @@ import org.apache.maven.api.Artifact;
 import org.apache.maven.api.Node;
 import org.apache.maven.api.Project;
 import org.apache.maven.api.RemoteRepository;
+import org.apache.maven.api.Session;
 
 /**
  * Interface to manage the project during its lifecycle
@@ -48,12 +49,19 @@ public interface ProjectManager extends Service
     @Nonnull
     Collection<Artifact> getAttachedArtifacts( Project project );
 
-    default void attachArtifact( Project project, String type, Path path )
+    default void attachArtifact( Session session, Project project, String type, Path path )
     {
-        attachArtifact( project, type, "", path );
+        attachArtifact( session, project, type, "", path );
     }
 
-    void attachArtifact( Project project, String type, String classifier, Path path );
+    default void attachArtifact( Session session, Project project, String type, String classifier, Path path )
+    {
+        Artifact artifact = session.createArtifact( project.getGroupId(), project.getArtifactId(),
+                                                    classifier, project.getVersion(), type );
+        attachArtifact( project, artifact, path );
+    }
+
+    void attachArtifact( Project project, Artifact artifact, Path path );
 
     List<String> getCompileSourceRoots( Project project );
 
diff --git a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultProjectDeployer.java b/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultProjectDeployer.java
deleted file mode 100644
index b8aabd6..0000000
--- a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultProjectDeployer.java
+++ /dev/null
@@ -1,142 +0,0 @@
-package org.apache.maven.impl;
-
-/*
- * 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 javax.annotation.Nonnull;
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.stream.Collectors;
-
-import org.apache.maven.api.Artifact;
-import org.apache.maven.api.services.ArtifactManager;
-import org.apache.maven.api.services.ProjectDeployer;
-import org.apache.maven.api.services.ProjectDeployerException;
-import org.apache.maven.api.services.ProjectDeployerRequest;
-import org.apache.maven.api.services.ProjectManager;
-import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.deployment.DeployRequest;
-import org.eclipse.aether.deployment.DeployResult;
-import org.eclipse.aether.deployment.DeploymentException;
-import org.eclipse.aether.metadata.Metadata;
-
-@Named
-public class DefaultProjectDeployer implements ProjectDeployer
-{
-
-    private final RepositorySystem repositorySystem;
-
-    @Inject
-    DefaultProjectDeployer( @Nonnull RepositorySystem repositorySystem )
-    {
-        this.repositorySystem = repositorySystem;
-    }
-
-    @Override
-    public void deploy( ProjectDeployerRequest request ) throws ProjectDeployerException, IllegalArgumentException
-    {
-        DefaultSession session = ( DefaultSession ) request.getSession();
-        try
-        {
-            ArtifactManager artifactManager = session.getService( ArtifactManager.class );
-            Collection<Artifact> artifacts = session.getService( ProjectManager.class )
-                    .getAttachedArtifacts( request.getProject() );
-            List<Metadata> metadatas = artifacts.stream()
-                    .map( artifactManager::getAttachedMetadatas )
-                    .flatMap( Collection::stream )
-                    .map( session::toMetadata )
-                    .collect( Collectors.toList() );
-            DeployRequest deployRequest = new DeployRequest()
-                    .setRepository( session.toRepository( request.getRepository() ) )
-                    .setArtifacts( session.toArtifacts( artifacts ) )
-                    .setMetadata( metadatas );
-
-            DeployResult result = repositorySystem.deploy( session.getSession(), deployRequest );
-        }
-        catch ( DeploymentException e )
-        {
-            throw new ProjectDeployerException( "Unable to deploy project", e );
-        }
-    }
-
-    void dumb()
-    {
-        /*
-        Artifact artifact = projectDeployerRequest.getProject().getArtifact();
-        String packaging = projectDeployerRequest.getProject().getPackaging();
-        File pomFile = projectDeployerRequest.getProject().getFile();
-
-        List<Artifact> attachedArtifacts = projectDeployerRequest.getProject().getAttachedArtifacts();
-
-        // Deploy the POM
-        boolean isPomArtifact = "pom".equals( packaging );
-        if ( isPomArtifact )
-        {
-            artifact.setFile( pomFile );
-        }
-        else
-        {
-            ProjectArtifactMetadata metadata = new ProjectArtifactMetadata( artifact, pomFile );
-            artifact.addMetadata( metadata );
-        }
-
-        // What consequence does this have?
-        // artifact.setRelease( true );
-
-        artifact.setRepository( artifactRepository );
-
-        int retryFailedDeploymentCount = projectDeployerRequest.getRetryFailedDeploymentCount();
-
-        List<Artifact> deployableArtifacts = new ArrayList<>();
-        if ( isPomArtifact )
-        {
-            deployableArtifacts.add( artifact );
-        }
-        else
-        {
-            File file = artifact.getFile();
-
-            if ( file != null && file.isFile() )
-            {
-                deployableArtifacts.add( artifact );
-            }
-            else if ( !attachedArtifacts.isEmpty() )
-            {
-                // TODO: Reconsider this exception? Better Exception type?
-                throw new NoFileAssignedException( "The packaging plugin for this project did not assign "
-                    + "a main file to the project but it has attachments. Change packaging to 'pom'." );
-            }
-            else
-            {
-                // TODO: Reconsider this exception? Better Exception type?
-                throw new NoFileAssignedException( "The packaging for this project did not assign "
-                    + "a file to the build artifact" );
-            }
-        }
-
-        deployableArtifacts.addAll( attachedArtifacts );
-
-        deploy( buildingRequest, deployableArtifacts, artifactRepository, retryFailedDeploymentCount );
-
-         */
-    }
-}
diff --git a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultProjectInstaller.java b/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultProjectInstaller.java
deleted file mode 100644
index ed87e56..0000000
--- a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultProjectInstaller.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package org.apache.maven.impl;
-
-/*
- * 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 javax.inject.Inject;
-import javax.inject.Named;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.stream.Collectors;
-
-import org.apache.maven.api.Artifact;
-import org.apache.maven.api.services.ArtifactManager;
-import org.apache.maven.api.services.ProjectInstaller;
-import org.apache.maven.api.services.ProjectInstallerException;
-import org.apache.maven.api.services.ProjectInstallerRequest;
-import org.apache.maven.api.services.ProjectManager;
-import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.installation.InstallRequest;
-import org.eclipse.aether.installation.InstallResult;
-import org.eclipse.aether.installation.InstallationException;
-import org.eclipse.aether.metadata.Metadata;
-
-@Named
-public class DefaultProjectInstaller implements ProjectInstaller
-{
-    private final RepositorySystem repositorySystem;
-
-    @Inject
-    DefaultProjectInstaller( RepositorySystem repositorySystem )
-    {
-        this.repositorySystem = repositorySystem;
-    }
-
-    @Override
-    public void install( ProjectInstallerRequest request ) throws ProjectInstallerException, IllegalArgumentException
-    {
-        DefaultSession session = ( DefaultSession ) request.getSession();
-        try
-        {
-            ArtifactManager artifactManager = session.getService( ArtifactManager.class );
-            Collection<Artifact> artifacts = session.getService( ProjectManager.class )
-                    .getAttachedArtifacts( request.getProject() );
-            List<Metadata> metadatas = artifacts.stream()
-                    .map( artifactManager::getAttachedMetadatas )
-                    .flatMap( Collection::stream )
-                    .map( session::toMetadata )
-                    .collect( Collectors.toList() );
-            InstallRequest installRequest = new InstallRequest()
-                    .setArtifacts( session.toArtifacts( artifacts ) )
-                    .setMetadata( metadatas );
-
-            InstallResult result = repositorySystem.install( session.getSession(), installRequest );
-        }
-        catch ( InstallationException e )
-        {
-            throw new ProjectInstallerException( "Unable to install project", e );
-        }
-    }
-}
diff --git a/maven-core/pom.xml b/maven-core/pom.xml
index 39f2e5f..4789889 100644
--- a/maven-core/pom.xml
+++ b/maven-core/pom.xml
@@ -85,6 +85,10 @@ under the License.
       <artifactId>maven-resolver-provider</artifactId>
     </dependency>
     <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-core-api</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.apache.maven.resolver</groupId>
       <artifactId>maven-resolver-impl</artifactId>
     </dependency>
diff --git a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
index 2965d11..0b883dc 100644
--- a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
+++ b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
@@ -19,6 +19,7 @@ package org.apache.maven;
  * under the License.
  */
 
+import org.apache.maven.api.Session;
 import org.apache.maven.artifact.ArtifactUtils;
 import org.apache.maven.execution.BuildResumptionAnalyzer;
 import org.apache.maven.execution.BuildResumptionDataRepository;
@@ -32,6 +33,7 @@ import org.apache.maven.execution.ProfileActivation;
 import org.apache.maven.execution.ProjectDependencyGraph;
 import org.apache.maven.graph.GraphBuilder;
 import org.apache.maven.internal.aether.DefaultRepositorySystemSessionFactory;
+import org.apache.maven.internal.impl.DefaultSessionFactory;
 import org.apache.maven.lifecycle.LifecycleExecutionException;
 import org.apache.maven.lifecycle.internal.ExecutionEventCatapult;
 import org.apache.maven.lifecycle.internal.LifecycleStarter;
@@ -107,6 +109,8 @@ public class DefaultMaven
 
     private final SuperPomProvider superPomProvider;
 
+    private final DefaultSessionFactory defaultSessionFactory;
+
     @Inject
     @SuppressWarnings( "checkstyle:ParameterNumber" )
     public DefaultMaven(
@@ -120,7 +124,8 @@ public class DefaultMaven
             @Named( GraphBuilder.HINT ) GraphBuilder graphBuilder,
             BuildResumptionAnalyzer buildResumptionAnalyzer,
             BuildResumptionDataRepository buildResumptionDataRepository,
-            SuperPomProvider superPomProvider )
+            SuperPomProvider superPomProvider,
+            DefaultSessionFactory defaultSessionFactory )
     {
         this.projectBuilder = projectBuilder;
         this.lifecycleStarter = lifecycleStarter;
@@ -133,6 +138,7 @@ public class DefaultMaven
         this.buildResumptionAnalyzer = buildResumptionAnalyzer;
         this.buildResumptionDataRepository = buildResumptionDataRepository;
         this.superPomProvider = superPomProvider;
+        this.defaultSessionFactory = defaultSessionFactory;
     }
 
     @Override
@@ -224,8 +230,10 @@ public class DefaultMaven
             DefaultRepositorySystemSession repoSession =
                 (DefaultRepositorySystemSession) newRepositorySession( request );
             MavenSession session = new MavenSession( container, repoSession, request, result );
+            session.setSession( defaultSessionFactory.getSession( session ) );
 
             sessionScope.seed( MavenSession.class, session );
+            sessionScope.seed( Session.class, session.getSession() );
 
             legacySupport.setSession( session );
 
diff --git a/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java b/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
index c2f0c89..f6d0409 100644
--- a/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
+++ b/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
@@ -28,6 +28,7 @@ import java.util.Properties;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 
+import org.apache.maven.api.Session;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.RepositoryCache;
 import org.apache.maven.monitor.event.EventDispatcher;
@@ -297,6 +298,8 @@ public class MavenSession
 
     private final Settings settings;
 
+    private Session session;
+
     @Deprecated
     /** @deprecated This appears not to be used anywhere within Maven itself. */
     public Map<String, MavenProject> getProjectMap()
@@ -439,5 +442,14 @@ public class MavenSession
         return container.lookupMap( role );
     }
 
+    public Session getSession()
+    {
+        return session;
+    }
+
+    public void setSession( Session session )
+    {
+        this.session = session;
+    }
     /*end[MAVEN4]*/
 }
diff --git a/maven-core/src/main/java/org/apache/maven/execution/MojoExecutionEvent.java b/maven-core/src/main/java/org/apache/maven/execution/MojoExecutionEvent.java
index 85a58cb..1426083 100644
--- a/maven-core/src/main/java/org/apache/maven/execution/MojoExecutionEvent.java
+++ b/maven-core/src/main/java/org/apache/maven/execution/MojoExecutionEvent.java
@@ -19,7 +19,6 @@ package org.apache.maven.execution;
  * under the License.
  */
 
-import org.apache.maven.plugin.Mojo;
 import org.apache.maven.plugin.MojoExecution;
 import org.apache.maven.project.MavenProject;
 
@@ -42,17 +41,17 @@ public class MojoExecutionEvent
 
     private final MojoExecution mojoExecution;
 
-    private final Mojo mojo;
+    private final Object mojo;
 
     private final Throwable cause;
 
-    public MojoExecutionEvent( MavenSession session, MavenProject project, MojoExecution mojoExecution, Mojo mojo )
+    public MojoExecutionEvent( MavenSession session, MavenProject project, MojoExecution mojoExecution, Object mojo )
     {
         this( session, project, mojoExecution, mojo, null );
     }
 
-    public MojoExecutionEvent( MavenSession session, MavenProject project, MojoExecution mojoExecution, Mojo mojo,
-                               Throwable cause )
+    public MojoExecutionEvent( MavenSession session, MavenProject project, MojoExecution mojoExecution,
+                               Object mojo, Throwable cause )
     {
         this.session = session;
         this.project = project;
@@ -76,7 +75,7 @@ public class MojoExecutionEvent
         return mojoExecution;
     }
 
-    public Mojo getMojo()
+    public Object getMojo()
     {
         return mojo;
     }
diff --git a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultArtifact.java b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifact.java
similarity index 98%
rename from maven-core-impl/src/main/java/org/apache/maven/impl/DefaultArtifact.java
rename to maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifact.java
index 5f5917c..fd902fb 100644
--- a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultArtifact.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifact.java
@@ -1,4 +1,4 @@
-package org.apache.maven.impl;
+package org.apache.maven.internal.impl;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultArtifactDeployer.java b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactDeployer.java
similarity index 98%
rename from maven-core-impl/src/main/java/org/apache/maven/impl/DefaultArtifactDeployer.java
rename to maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactDeployer.java
index bc4d9a2..9dde305 100644
--- a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultArtifactDeployer.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactDeployer.java
@@ -1,4 +1,4 @@
-package org.apache.maven.impl;
+package org.apache.maven.internal.impl;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultArtifactFactory.java b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactFactory.java
similarity index 98%
rename from maven-core-impl/src/main/java/org/apache/maven/impl/DefaultArtifactFactory.java
rename to maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactFactory.java
index c1fa7ca..c0a6f6c 100644
--- a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultArtifactFactory.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactFactory.java
@@ -1,4 +1,4 @@
-package org.apache.maven.impl;
+package org.apache.maven.internal.impl;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultArtifactInstaller.java b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactInstaller.java
similarity index 99%
rename from maven-core-impl/src/main/java/org/apache/maven/impl/DefaultArtifactInstaller.java
rename to maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactInstaller.java
index 2c45534..f9df047 100644
--- a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultArtifactInstaller.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactInstaller.java
@@ -1,4 +1,4 @@
-package org.apache.maven.impl;
+package org.apache.maven.internal.impl;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactManager.java b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactManager.java
new file mode 100644
index 0000000..6d7706f
--- /dev/null
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactManager.java
@@ -0,0 +1,89 @@
+package org.apache.maven.internal.impl;
+
+/*
+ * 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 javax.annotation.Nonnull;
+import javax.inject.Named;
+
+import java.nio.file.Path;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Map;
+import java.util.Optional;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.regex.Pattern;
+
+import org.apache.maven.SessionScoped;
+import org.apache.maven.api.Artifact;
+import org.apache.maven.api.Metadata;
+import org.apache.maven.api.services.ArtifactManager;
+
+@Named
+@SessionScoped
+public class DefaultArtifactManager implements ArtifactManager
+{
+    private static final String SNAPSHOT = "SNAPSHOT";
+    private static final Pattern SNAPSHOT_TIMESTAMP = Pattern.compile( "^(.*-)?([0-9]{8}\\.[0-9]{6}-[0-9]+)$" );
+
+
+    private final Map<Artifact, Path> paths = new ConcurrentHashMap<>();
+    private final Map<Artifact, Collection<Metadata>> metadatas = new ConcurrentHashMap<>();
+
+    @Nonnull
+    @Override
+    public Optional<Path> getPath( @Nonnull Artifact artifact )
+    {
+        return Optional.ofNullable( paths.get( artifact ) );
+    }
+
+    @Override
+    public void setPath( @Nonnull Artifact artifact, Path path )
+    {
+        if ( path == null )
+        {
+            paths.remove( artifact );
+        }
+        else
+        {
+            paths.put( artifact, path );
+        }
+    }
+
+    @Nonnull
+    @Override
+    public Collection<Metadata> getAttachedMetadatas( @Nonnull Artifact artifact )
+    {
+        Collection<Metadata> m = metadatas.get( artifact );
+        return m != null ? Collections.unmodifiableCollection( m ) : Collections.emptyList();
+    }
+
+    @Override
+    public void attachMetadata( @Nonnull Artifact artifact, @Nonnull Metadata metadata )
+    {
+        metadatas.computeIfAbsent( artifact, a -> new CopyOnWriteArrayList<>() ).add( metadata );
+    }
+
+    @Override
+    public boolean isSnapshot( String version )
+    {
+        return version.endsWith( SNAPSHOT ) || SNAPSHOT_TIMESTAMP.matcher( version ).matches();
+    }
+}
diff --git a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultArtifactResolver.java b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactResolver.java
similarity index 98%
rename from maven-core-impl/src/main/java/org/apache/maven/impl/DefaultArtifactResolver.java
rename to maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactResolver.java
index 0f87137..a084055 100644
--- a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultArtifactResolver.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactResolver.java
@@ -1,4 +1,4 @@
-package org.apache.maven.impl;
+package org.apache.maven.internal.impl;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultDependency.java b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultDependency.java
similarity index 98%
rename from maven-core-impl/src/main/java/org/apache/maven/impl/DefaultDependency.java
rename to maven-core/src/main/java/org/apache/maven/internal/impl/DefaultDependency.java
index 5822d8c..190ab9e 100644
--- a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultDependency.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultDependency.java
@@ -1,4 +1,4 @@
-package org.apache.maven.impl;
+package org.apache.maven.internal.impl;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultDependencyCollector.java b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultDependencyCollector.java
similarity index 98%
rename from maven-core-impl/src/main/java/org/apache/maven/impl/DefaultDependencyCollector.java
rename to maven-core/src/main/java/org/apache/maven/internal/impl/DefaultDependencyCollector.java
index 469b541..74045d6 100644
--- a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultDependencyCollector.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultDependencyCollector.java
@@ -1,4 +1,4 @@
-package org.apache.maven.impl;
+package org.apache.maven.internal.impl;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultDependencyFactory.java b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultDependencyFactory.java
similarity index 98%
rename from maven-core-impl/src/main/java/org/apache/maven/impl/DefaultDependencyFactory.java
rename to maven-core/src/main/java/org/apache/maven/internal/impl/DefaultDependencyFactory.java
index 7424b22..aa83ffb 100644
--- a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultDependencyFactory.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultDependencyFactory.java
@@ -1,4 +1,4 @@
-package org.apache.maven.impl;
+package org.apache.maven.internal.impl;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolver.java b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultDependencyResolver.java
similarity index 99%
rename from maven-core-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolver.java
rename to maven-core/src/main/java/org/apache/maven/internal/impl/DefaultDependencyResolver.java
index ab7af8c..e520512 100644
--- a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultDependencyResolver.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultDependencyResolver.java
@@ -1,4 +1,4 @@
-package org.apache.maven.impl;
+package org.apache.maven.internal.impl;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultLocalRepository.java b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultLocalRepository.java
similarity index 92%
rename from maven-core-impl/src/main/java/org/apache/maven/impl/DefaultLocalRepository.java
rename to maven-core/src/main/java/org/apache/maven/internal/impl/DefaultLocalRepository.java
index 5867af8..2207bb9 100644
--- a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultLocalRepository.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultLocalRepository.java
@@ -1,4 +1,4 @@
-package org.apache.maven.impl;
+package org.apache.maven.internal.impl;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -33,7 +33,7 @@ public class DefaultLocalRepository implements LocalRepository
     private final org.eclipse.aether.repository.LocalRepository repository;
 
     @Inject
-    DefaultLocalRepository( @Nonnull org.eclipse.aether.repository.LocalRepository repository )
+    public DefaultLocalRepository( @Nonnull org.eclipse.aether.repository.LocalRepository repository )
     {
         this.repository = Objects.requireNonNull( repository, "repository" );
     }
diff --git a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultLocalRepositoryManager.java b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultLocalRepositoryManager.java
similarity index 87%
rename from maven-core-impl/src/main/java/org/apache/maven/impl/DefaultLocalRepositoryManager.java
rename to maven-core/src/main/java/org/apache/maven/internal/impl/DefaultLocalRepositoryManager.java
index 00ac3dc..54d6c06 100644
--- a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultLocalRepositoryManager.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultLocalRepositoryManager.java
@@ -1,4 +1,4 @@
-package org.apache.maven.impl;
+package org.apache.maven.internal.impl;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -27,7 +27,6 @@ import org.apache.maven.api.Metadata;
 import org.apache.maven.api.RemoteRepository;
 import org.apache.maven.api.Session;
 import org.apache.maven.api.services.LocalRepositoryManager;
-import org.eclipse.aether.repository.NoLocalRepositoryManagerException;
 
 public class DefaultLocalRepositoryManager implements LocalRepositoryManager
 {
@@ -71,15 +70,8 @@ public class DefaultLocalRepositoryManager implements LocalRepositoryManager
     private org.eclipse.aether.repository.LocalRepositoryManager getManager(
             DefaultSession session, LocalRepository local )
     {
-        try
-        {
-            return session.getLocalRepositoryProvider()
-                    .newLocalRepositoryManager( session.getSession(), session.toRepository( local ) );
-        }
-        catch ( NoLocalRepositoryManagerException e )
-        {
-            throw new IllegalStateException( e );
-        }
+        return session.getRepositorySystem()
+                .newLocalRepositoryManager( session.getSession(), session.toRepository( local ) );
     }
 
 }
diff --git a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultNode.java b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultNode.java
similarity index 98%
rename from maven-core-impl/src/main/java/org/apache/maven/impl/DefaultNode.java
rename to maven-core/src/main/java/org/apache/maven/internal/impl/DefaultNode.java
index 85d95b4..375758c 100644
--- a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultNode.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultNode.java
@@ -1,4 +1,4 @@
-package org.apache.maven.impl;
+package org.apache.maven.internal.impl;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultProject.java b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProject.java
similarity index 93%
rename from maven-core-impl/src/main/java/org/apache/maven/impl/DefaultProject.java
rename to maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProject.java
index bc0de16..e15386b 100644
--- a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultProject.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProject.java
@@ -1,4 +1,4 @@
-package org.apache.maven.impl;
+package org.apache.maven.internal.impl;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -27,6 +27,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 
+import org.apache.maven.RepositoryUtils;
 import org.apache.maven.api.Artifact;
 import org.apache.maven.api.Dependency;
 import org.apache.maven.api.Exclusion;
@@ -72,8 +73,7 @@ public class DefaultProject implements Project
     @Override
     public Artifact getArtifact()
     {
-        // TODO
-        throw new UnsupportedOperationException( "Not implemented yet" );
+        return session.getArtifact( RepositoryUtils.toArtifact( project.getArtifact() ) );
     }
 
     @Nonnull
@@ -94,8 +94,7 @@ public class DefaultProject implements Project
     @Override
     public Path getPomPath()
     {
-        // TODO
-        throw new UnsupportedOperationException( "Not implemented yet" );
+        return project.getFile().toPath();
     }
 
     @Nonnull
@@ -117,6 +116,12 @@ public class DefaultProject implements Project
         return Collections.emptyList();
     }
 
+    @Override
+    public boolean isExecutionRoot()
+    {
+        return project.isExecutionRoot();
+    }
+
     private Dependency toDependency( org.apache.maven.model.Dependency dependency )
     {
         return new Dependency()
diff --git a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultProjectBuilder.java b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectBuilder.java
similarity index 99%
rename from maven-core-impl/src/main/java/org/apache/maven/impl/DefaultProjectBuilder.java
rename to maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectBuilder.java
index e287ccf..819d35d 100644
--- a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultProjectBuilder.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectBuilder.java
@@ -1,4 +1,4 @@
-package org.apache.maven.impl;
+package org.apache.maven.internal.impl;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectManager.java b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectManager.java
new file mode 100644
index 0000000..aeb0c9e
--- /dev/null
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectManager.java
@@ -0,0 +1,99 @@
+package org.apache.maven.internal.impl;
+
+/*
+ * 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 javax.annotation.Nonnull;
+
+import java.nio.file.Path;
+import java.util.Collection;
+import java.util.List;
+import java.util.Optional;
+
+import org.apache.maven.api.Artifact;
+import org.apache.maven.api.Node;
+import org.apache.maven.api.Project;
+import org.apache.maven.api.RemoteRepository;
+import org.apache.maven.api.services.ProjectManager;
+
+public class DefaultProjectManager implements ProjectManager
+{
+
+    @Nonnull
+    @Override
+    public Optional<Path> getPath( Project project )
+    {
+        return Optional.empty();
+    }
+
+    @Nonnull
+    @Override
+    public Collection<Artifact> getAttachedArtifacts( Project project )
+    {
+        return null;
+    }
+
+    @Override
+    public void attachArtifact( Project project, Artifact artifact, Path path )
+    {
+
+    }
+
+    @Override
+    public List<String> getCompileSourceRoots( Project project )
+    {
+        return null;
+    }
+
+    @Override
+    public void addCompileSourceRoot( Project project, String sourceRoot )
+    {
+
+    }
+
+    @Override
+    public List<String> getTestCompileSourceRoots( Project project )
+    {
+        return null;
+    }
+
+    @Override
+    public void addTestCompileSourceRoot( Project project, String sourceRoot )
+    {
+
+    }
+
+    @Override
+    public List<RemoteRepository> getRepositories( Project project )
+    {
+        return null;
+    }
+
+    @Override
+    public List<Artifact> getResolvedDependencies( Project project, ResolutionScope scope )
+    {
+        return null;
+    }
+
+    @Override
+    public Node getCollectedDependencies( Project project, ResolutionScope scope )
+    {
+        return null;
+    }
+}
diff --git a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultRemoteRepository.java b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultRemoteRepository.java
similarity index 97%
rename from maven-core-impl/src/main/java/org/apache/maven/impl/DefaultRemoteRepository.java
rename to maven-core/src/main/java/org/apache/maven/internal/impl/DefaultRemoteRepository.java
index 713619e..68bc32d 100644
--- a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultRemoteRepository.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultRemoteRepository.java
@@ -1,4 +1,4 @@
-package org.apache.maven.impl;
+package org.apache.maven.internal.impl;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultRepositoryFactory.java b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultRepositoryFactory.java
similarity index 98%
rename from maven-core-impl/src/main/java/org/apache/maven/impl/DefaultRepositoryFactory.java
rename to maven-core/src/main/java/org/apache/maven/internal/impl/DefaultRepositoryFactory.java
index 6198946..e6595f7 100644
--- a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultRepositoryFactory.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultRepositoryFactory.java
@@ -1,4 +1,4 @@
-package org.apache.maven.impl;
+package org.apache.maven.internal.impl;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultSession.java b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultSession.java
similarity index 86%
rename from maven-core-impl/src/main/java/org/apache/maven/impl/DefaultSession.java
rename to maven-core/src/main/java/org/apache/maven/internal/impl/DefaultSession.java
index 291ea13..72c6dba 100644
--- a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultSession.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultSession.java
@@ -1,4 +1,4 @@
-package org.apache.maven.impl;
+package org.apache.maven.internal.impl;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -35,9 +35,12 @@ import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.function.Supplier;
 import java.util.stream.Collectors;
 
+import org.apache.maven.RepositoryUtils;
 import org.apache.maven.api.Listener;
 import org.apache.maven.api.SessionData;
+import org.apache.maven.api.services.ArtifactManager;
 import org.apache.maven.api.services.LocalRepositoryManager;
+import org.apache.maven.api.services.ProjectManager;
 import org.apache.maven.api.services.RepositoryFactory;
 import org.apache.maven.api.services.Service;
 import org.apache.maven.api.Session;
@@ -61,29 +64,25 @@ import org.apache.maven.api.services.DependencyCollector;
 import org.apache.maven.api.services.DependencyFactory;
 import org.apache.maven.api.services.DependencyResolver;
 import org.apache.maven.api.services.ProjectBuilder;
-import org.apache.maven.api.services.ProjectDeployer;
-import org.apache.maven.api.services.ProjectInstaller;
 import org.apache.maven.settings.Settings;
 import org.apache.maven.toolchain.DefaultToolchainManagerPrivate;
 import org.eclipse.aether.DefaultRepositorySystemSession;
 import org.eclipse.aether.RepositorySystem;
 import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.NoLocalRepositoryManagerException;
-import org.eclipse.aether.spi.localrepo.LocalRepositoryManagerFactory;
-import org.eclipse.aether.impl.LocalRepositoryProvider;
 
 public class DefaultSession implements Session
 {
 
+    private final MavenSession mavenSession;
     private final RepositorySystemSession session;
     private final RepositorySystem repositorySystem;
-    private final LocalRepositoryManagerFactory localRepositoryManagerFactory;
     private final List<RemoteRepository> repositories;
     private final org.apache.maven.project.ProjectBuilder projectBuilder;
     private final MavenRepositorySystem mavenRepositorySystem;
     private final DefaultToolchainManagerPrivate toolchainManagerPrivate;
-    private LocalRepositoryProvider localRepositoryProvider;
     private final List<Listener> listeners = new CopyOnWriteArrayList<>();
+    private final ArtifactManager artifactManager = new DefaultArtifactManager();
+    private final ProjectManager projectManager = new DefaultProjectManager();
 
     private final Map<org.eclipse.aether.graph.DependencyNode, Node> allNodes
             = Collections.synchronizedMap( new WeakHashMap<>() );
@@ -96,18 +95,20 @@ public class DefaultSession implements Session
     private final Map<org.eclipse.aether.graph.Dependency, Dependency> allDependencies
             = Collections.synchronizedMap( new WeakHashMap<>() );
 
-    public DefaultSession( @Nonnull RepositorySystemSession session,
+    public DefaultSession( @Nonnull MavenSession session,
                            @Nonnull RepositorySystem repositorySystem,
-                           @Nonnull LocalRepositoryManagerFactory localRepositoryManagerFactory,
-                           @Nonnull List<RemoteRepository> repositories,
+                           @Nullable List<RemoteRepository> repositories,
                            @Nonnull org.apache.maven.project.ProjectBuilder projectBuilder,
                            @Nonnull MavenRepositorySystem mavenRepositorySystem,
                            @Nonnull DefaultToolchainManagerPrivate toolchainManagerPrivate )
     {
-        this.session = Objects.requireNonNull( session );
+        this.mavenSession = Objects.requireNonNull( session );
+        this.session = mavenSession.getRepositorySession();
         this.repositorySystem = Objects.requireNonNull( repositorySystem );
-        this.localRepositoryManagerFactory = Objects.requireNonNull( localRepositoryManagerFactory );
-        this.repositories = Objects.requireNonNull( repositories );
+        this.repositories = repositories != null
+                ? repositories
+                : mavenSession.getRequest().getRemoteRepositories().stream()
+                    .map( RepositoryUtils::toRepo ).map( this::getRemoteRepository ).collect( Collectors.toList() );
         this.projectBuilder = projectBuilder;
         this.mavenRepositorySystem = mavenRepositorySystem;
         this.toolchainManagerPrivate = toolchainManagerPrivate;
@@ -136,21 +137,21 @@ public class DefaultSession implements Session
     @Override
     public Settings getSettings()
     {
-        return null;
+        return mavenSession.getSettings();
     }
 
     @Nonnull
     @Override
     public Properties getUserProperties()
     {
-        return null;
+        return mavenSession.getUserProperties();
     }
 
     @Nonnull
     @Override
     public Properties getSystemProperties()
     {
-        return null;
+        return mavenSession.getSystemProperties();
     }
 
     @Nonnull
@@ -196,30 +197,23 @@ public class DefaultSession implements Session
         {
             return this;
         }
-        try
-        {
-            org.eclipse.aether.repository.LocalRepository repository = toRepository( localRepository );
-            org.eclipse.aether.repository.LocalRepositoryManager localRepositoryManager
-                    = localRepositoryManagerFactory.newInstance( session, repository );
-
-            RepositorySystemSession newSession = new DefaultRepositorySystemSession( session )
-                    .setLocalRepositoryManager( localRepositoryManager );
-
-            return new DefaultSession( newSession, repositorySystem, localRepositoryManagerFactory,
-                                       repositories, projectBuilder, mavenRepositorySystem, toolchainManagerPrivate );
-        }
-        catch ( NoLocalRepositoryManagerException e )
-        {
-            throw new IllegalArgumentException( "Unsupported repository layout", e );
-        }
-
+        org.eclipse.aether.repository.LocalRepository repository = toRepository( localRepository );
+        org.eclipse.aether.repository.LocalRepositoryManager localRepositoryManager
+                = repositorySystem.newLocalRepositoryManager( session, repository );
+
+        RepositorySystemSession repoSession = new DefaultRepositorySystemSession( session )
+                .setLocalRepositoryManager( localRepositoryManager );
+        MavenSession newSession = new MavenSession( mavenSession.getContainer(), repoSession,
+                                                    mavenSession.getRequest(), mavenSession.getResult() );
+        return new DefaultSession( newSession, repositorySystem,
+                                   repositories, projectBuilder, mavenRepositorySystem, toolchainManagerPrivate );
     }
 
     @Nonnull
     @Override
     public Session withRemoteRepositories( @Nonnull List<RemoteRepository> repositories )
     {
-        return new DefaultSession( session, repositorySystem, localRepositoryManagerFactory,
+        return new DefaultSession( mavenSession, repositorySystem,
                                    repositories, projectBuilder, mavenRepositorySystem, toolchainManagerPrivate );
     }
 
@@ -244,6 +238,10 @@ public class DefaultSession implements Session
         {
             return (T) new DefaultArtifactInstaller( repositorySystem );
         }
+        else if ( clazz == ArtifactManager.class )
+        {
+            return (T) artifactManager;
+        }
         else if ( clazz == DependencyFactory.class )
         {
             return (T) new DefaultDependencyFactory();
@@ -260,13 +258,9 @@ public class DefaultSession implements Session
         {
             return (T) new DefaultProjectBuilder( projectBuilder );
         }
-        else if ( clazz == ProjectDeployer.class )
-        {
-            return (T) new DefaultProjectDeployer( repositorySystem );
-        }
-        else if ( clazz == ProjectInstaller.class )
+        else if ( clazz == ProjectManager.class )
         {
-            return (T) new DefaultProjectInstaller( repositorySystem );
+            return (T) projectManager;
         }
         else if ( clazz == LocalRepositoryManager.class )
         {
@@ -288,9 +282,9 @@ public class DefaultSession implements Session
         return session;
     }
 
-    public LocalRepositoryProvider getLocalRepositoryProvider()
+    public RepositorySystem getRepositorySystem()
     {
-        return localRepositoryProvider;
+        return repositorySystem;
     }
 
     public RemoteRepository getRemoteRepository( org.eclipse.aether.repository.RemoteRepository repository )
@@ -443,7 +437,7 @@ public class DefaultSession implements Session
                     artifact.getExtension(),
                     artifact.getVersion(),
                     null,
-                    ( (Artifact) artifact ).getPath().map( Path::toFile ).orElse( null )
+                    getService( ArtifactManager.class ).getPath( artifact ).map( Path::toFile ).orElse( null )
             );
         }
     }
diff --git a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultSessionFactory.java b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultSessionFactory.java
new file mode 100644
index 0000000..dc7e84b
--- /dev/null
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultSessionFactory.java
@@ -0,0 +1,67 @@
+package org.apache.maven.internal.impl;
+
+/*
+ * 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 javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+import org.apache.maven.api.Session;
+import org.apache.maven.bridge.MavenRepositorySystem;
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.project.ProjectBuilder;
+import org.apache.maven.toolchain.DefaultToolchainManagerPrivate;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.SessionData;
+
+@Singleton
+@Named
+public class DefaultSessionFactory
+{
+    private final RepositorySystem repositorySystem;
+    private final org.apache.maven.project.ProjectBuilder projectBuilder;
+    private final MavenRepositorySystem mavenRepositorySystem;
+    private final DefaultToolchainManagerPrivate toolchainManagerPrivate;
+
+    @Inject
+    public DefaultSessionFactory( RepositorySystem repositorySystem,
+                                  ProjectBuilder projectBuilder,
+                                  MavenRepositorySystem mavenRepositorySystem,
+                                  DefaultToolchainManagerPrivate toolchainManagerPrivate )
+    {
+        this.repositorySystem = repositorySystem;
+        this.projectBuilder = projectBuilder;
+        this.mavenRepositorySystem = mavenRepositorySystem;
+        this.toolchainManagerPrivate = toolchainManagerPrivate;
+    }
+
+    public Session getSession( MavenSession mavenSession )
+    {
+        SessionData data = mavenSession.getRepositorySession().getData();
+        return (Session) data.computeIfAbsent( DefaultSession.class, () -> newSession( mavenSession ) );
+    }
+
+    private Session newSession( MavenSession mavenSession )
+    {
+        return new DefaultSession(
+                mavenSession, repositorySystem, null,
+                projectBuilder, mavenRepositorySystem, toolchainManagerPrivate );
+    }
+}
diff --git a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultToolchainManager.java b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultToolchainManager.java
similarity index 99%
rename from maven-core-impl/src/main/java/org/apache/maven/impl/DefaultToolchainManager.java
rename to maven-core/src/main/java/org/apache/maven/internal/impl/DefaultToolchainManager.java
index a8912f7..6c285cd 100644
--- a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultToolchainManager.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultToolchainManager.java
@@ -1,4 +1,4 @@
-package org.apache.maven.impl;
+package org.apache.maven.internal.impl;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/maven-core-impl/src/main/java/org/apache/maven/impl/MappedCollection.java b/maven-core/src/main/java/org/apache/maven/internal/impl/MappedCollection.java
similarity index 97%
rename from maven-core-impl/src/main/java/org/apache/maven/impl/MappedCollection.java
rename to maven-core/src/main/java/org/apache/maven/internal/impl/MappedCollection.java
index 1fd3248..3231080 100644
--- a/maven-core-impl/src/main/java/org/apache/maven/impl/MappedCollection.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/MappedCollection.java
@@ -1,4 +1,4 @@
-package org.apache.maven.impl;
+package org.apache.maven.internal.impl;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/maven-core-impl/src/main/java/org/apache/maven/impl/MappedList.java b/maven-core/src/main/java/org/apache/maven/internal/impl/MappedList.java
similarity index 97%
rename from maven-core-impl/src/main/java/org/apache/maven/impl/MappedList.java
rename to maven-core/src/main/java/org/apache/maven/internal/impl/MappedList.java
index a5e8e71..e68f259 100644
--- a/maven-core-impl/src/main/java/org/apache/maven/impl/MappedList.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/MappedList.java
@@ -1,4 +1,4 @@
-package org.apache.maven.impl;
+package org.apache.maven.internal.impl;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleModuleBuilder.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleModuleBuilder.java
index 405ab5f..970c906 100644
--- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleModuleBuilder.java
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleModuleBuilder.java
@@ -26,6 +26,7 @@ import javax.inject.Inject;
 import javax.inject.Named;
 import javax.inject.Singleton;
 
+import org.apache.maven.api.Session;
 import org.apache.maven.execution.BuildSuccess;
 import org.apache.maven.execution.ExecutionEvent;
 import org.apache.maven.execution.MavenSession;
@@ -94,6 +95,7 @@ public class LifecycleModuleBuilder
         {
             sessionScope.enter();
             sessionScope.seed( MavenSession.class, session );
+            sessionScope.seed( Session.class, session.getSession() );
         }
         try
         {
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java b/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java
index 272371a..4db9028 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java
@@ -97,7 +97,7 @@ public class DefaultBuildPluginManager
 
         MojoDescriptor mojoDescriptor = mojoExecution.getMojoDescriptor();
 
-        Mojo mojo = null;
+        Object mojo = null;
 
         ClassRealm pluginRealm;
         try
@@ -121,7 +121,15 @@ public class DefaultBuildPluginManager
             scope.seed( MavenProject.class, project );
             scope.seed( MojoExecution.class, mojoExecution );
 
-            mojo = mavenPluginManager.getConfiguredMojo( Mojo.class, session, mojoExecution );
+            if ( mojoDescriptor.isV4Api() )
+            {
+                mojo = mavenPluginManager.getConfiguredMojo(
+                        org.apache.maven.api.plugin.Mojo.class, session, mojoExecution );
+            }
+            else
+            {
+                mojo = mavenPluginManager.getConfiguredMojo( Mojo.class, session, mojoExecution );
+            }
 
             legacySupport.setSession( session );
 
@@ -134,7 +142,14 @@ public class DefaultBuildPluginManager
 
                 mojoExecutionListener.beforeMojoExecution( mojoExecutionEvent );
 
-                mojo.execute();
+                if ( mojoDescriptor.isV4Api() )
+                {
+                    ( ( org.apache.maven.api.plugin.Mojo ) mojo ).execute();
+                }
+                else
+                {
+                    ( ( Mojo ) mojo ).execute();
+                }
 
                 mojoExecutionListener.afterMojoExecutionSuccess( mojoExecutionEvent );
             }
@@ -150,15 +165,15 @@ public class DefaultBuildPluginManager
         }
         catch ( PluginContainerException e )
         {
-            mojoExecutionListener.afterExecutionFailure( new MojoExecutionEvent( session, project, mojoExecution, mojo,
-                                                                                 e ) );
+            mojoExecutionListener.afterExecutionFailure(
+                    new MojoExecutionEvent( session, project, mojoExecution, mojo, e ) );
 
             throw new PluginExecutionException( mojoExecution, project, e );
         }
         catch ( NoClassDefFoundError e )
         {
-            mojoExecutionListener.afterExecutionFailure( new MojoExecutionEvent( session, project, mojoExecution, mojo,
-                                                                                 e ) );
+            mojoExecutionListener.afterExecutionFailure(
+                    new MojoExecutionEvent( session, project, mojoExecution, mojo, e ) );
 
             ByteArrayOutputStream os = new ByteArrayOutputStream( 1024 );
             PrintStream ps = new PrintStream( os );
@@ -172,8 +187,8 @@ public class DefaultBuildPluginManager
         }
         catch ( LinkageError e )
         {
-            mojoExecutionListener.afterExecutionFailure( new MojoExecutionEvent( session, project, mojoExecution, mojo,
-                                                                                 e ) );
+            mojoExecutionListener.afterExecutionFailure(
+                    new MojoExecutionEvent( session, project, mojoExecution, mojo, e ) );
 
             ByteArrayOutputStream os = new ByteArrayOutputStream( 1024 );
             PrintStream ps = new PrintStream( os );
@@ -187,8 +202,8 @@ public class DefaultBuildPluginManager
         }
         catch ( ClassCastException e )
         {
-            mojoExecutionListener.afterExecutionFailure( new MojoExecutionEvent( session, project, mojoExecution, mojo,
-                                                                                 e ) );
+            mojoExecutionListener.afterExecutionFailure(
+                    new MojoExecutionEvent( session, project, mojoExecution, mojo, e ) );
 
             ByteArrayOutputStream os = new ByteArrayOutputStream( 1024 );
             PrintStream ps = new PrintStream( os );
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java b/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java
index f621b63..6f00873 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java
@@ -200,7 +200,14 @@ public class PluginParameterExpressionEvaluator
         }
         else if ( "session".equals( expression ) )
         {
-            value = session;
+            if ( mojoDescriptor.isV4Api() )
+            {
+                value = session.getSession();
+            }
+            else
+            {
+                value = session;
+            }
         }
         else if ( expression.startsWith( "session" ) )
         {
diff --git a/maven-core/src/main/java/org/apache/maven/session/scope/internal/SessionScopeModule.java b/maven-core/src/main/java/org/apache/maven/session/scope/internal/SessionScopeModule.java
index b00c588..ba93ad9 100644
--- a/maven-core/src/main/java/org/apache/maven/session/scope/internal/SessionScopeModule.java
+++ b/maven-core/src/main/java/org/apache/maven/session/scope/internal/SessionScopeModule.java
@@ -23,6 +23,7 @@ import javax.inject.Inject;
 import javax.inject.Named;
 
 import org.apache.maven.SessionScoped;
+import org.apache.maven.api.Session;
 import org.apache.maven.execution.MavenSession;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
@@ -62,5 +63,6 @@ public class SessionScopeModule
         bind( SessionScope.class ).toInstance( scope );
 
         bind( MavenSession.class ).toProvider( SessionScope.seededKeyProvider() ).in( scope );
+        bind( Session.class ).toProvider( SessionScope.seededKeyProvider() ).in( scope );
     }
 }
diff --git a/maven-core/src/main/resources/META-INF/maven/extension.xml b/maven-core/src/main/resources/META-INF/maven/extension.xml
index aa890cc..b6b1d3f 100644
--- a/maven-core/src/main/resources/META-INF/maven/extension.xml
+++ b/maven-core/src/main/resources/META-INF/maven/extension.xml
@@ -22,6 +22,8 @@ under the License.
 <extension>
   <exportedPackages>
     <!-- maven-* -->
+    <exportedPackage>org.apache.maven.api</exportedPackage>
+
     <exportedPackage>org.apache.maven.*</exportedPackage>
     <exportedPackage>org.apache.maven.artifact</exportedPackage>
     <exportedPackage>org.apache.maven.classrealm</exportedPackage>
diff --git a/maven-core-impl/src/test/java/org/apache/maven/impl/TestApi.java b/maven-core/src/test/java/org/apache/maven/internal/impl/TestApi.java
similarity index 89%
rename from maven-core-impl/src/test/java/org/apache/maven/impl/TestApi.java
rename to maven-core/src/test/java/org/apache/maven/internal/impl/TestApi.java
index dc8a383..7eec899 100644
--- a/maven-core-impl/src/test/java/org/apache/maven/impl/TestApi.java
+++ b/maven-core/src/test/java/org/apache/maven/internal/impl/TestApi.java
@@ -1,4 +1,4 @@
-package org.apache.maven.impl;
+package org.apache.maven.internal.impl;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -24,6 +24,7 @@ import javax.inject.Inject;
 import java.nio.file.Paths;
 import java.util.Collections;
 
+import org.apache.maven.execution.MavenSession;
 import org.apache.maven.api.Project;
 import org.apache.maven.api.Session;
 import org.apache.maven.api.Artifact;
@@ -39,7 +40,6 @@ import org.eclipse.aether.RepositorySystem;
 import org.eclipse.aether.RepositorySystemSession;
 import org.eclipse.aether.repository.LocalRepository;
 import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.localrepo.LocalRepositoryManagerFactory;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
@@ -58,9 +58,6 @@ public class TestApi
     RepositorySystem repositorySystem;
 
     @Inject
-    LocalRepositoryManagerFactory localRepositoryManagerFactory;
-
-    @Inject
     org.apache.maven.project.ProjectBuilder projectBuilder;
 
     @Inject
@@ -73,11 +70,12 @@ public class TestApi
     void setup()
     {
         RepositorySystemSession rss = MavenRepositorySystemUtils.newSession();
-        DefaultSession session = new DefaultSession( rss, repositorySystem, localRepositoryManagerFactory,
-                                                     Collections.emptyList(), projectBuilder, mavenRepositorySystem,
-                                                     toolchainManagerPrivate );
+        MavenSession ms = new MavenSession( null, rss, null, null );
+        DefaultSession session = new DefaultSession( ms, repositorySystem,
+                                                     Collections.emptyList(), projectBuilder,
+                                                     mavenRepositorySystem, toolchainManagerPrivate );
         DefaultLocalRepository localRepository = new DefaultLocalRepository(
-                new LocalRepository( "target/repo" ) );
+                new LocalRepository( "target/apiv4-repo" ) );
         org.apache.maven.api.RemoteRepository remoteRepository = session.getRemoteRepository(
                 new RemoteRepository.Builder( "mirror", "default",
                         "file:target/test-classes/repo" ).build() );
diff --git a/maven-core-impl/src/test/java/org/apache/maven/impl/TestArtifactHandler.java b/maven-core/src/test/java/org/apache/maven/internal/impl/TestArtifactHandler.java
similarity index 97%
rename from maven-core-impl/src/test/java/org/apache/maven/impl/TestArtifactHandler.java
rename to maven-core/src/test/java/org/apache/maven/internal/impl/TestArtifactHandler.java
index 1411364..3db6e83 100644
--- a/maven-core-impl/src/test/java/org/apache/maven/impl/TestArtifactHandler.java
+++ b/maven-core/src/test/java/org/apache/maven/internal/impl/TestArtifactHandler.java
@@ -1,4 +1,4 @@
-package org.apache.maven.impl;
+package org.apache.maven.internal.impl;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/maven-core-impl/src/test/java/org/apache/maven/impl/TestRepositorySystem.java b/maven-core/src/test/java/org/apache/maven/internal/impl/TestRepositorySystem.java
similarity index 99%
rename from maven-core-impl/src/test/java/org/apache/maven/impl/TestRepositorySystem.java
rename to maven-core/src/test/java/org/apache/maven/internal/impl/TestRepositorySystem.java
index 824ac27..d47d76a 100644
--- a/maven-core-impl/src/test/java/org/apache/maven/impl/TestRepositorySystem.java
+++ b/maven-core/src/test/java/org/apache/maven/internal/impl/TestRepositorySystem.java
@@ -1,4 +1,4 @@
-package org.apache.maven.impl;
+package org.apache.maven.internal.impl;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/maven-core/src/test/java/org/apache/maven/toolchain/DefaultToolchainManagerPrivateTest.java b/maven-core/src/test/java/org/apache/maven/toolchain/DefaultToolchainManagerPrivateTest.java
index 04ab6f1..4423182 100644
--- a/maven-core/src/test/java/org/apache/maven/toolchain/DefaultToolchainManagerPrivateTest.java
+++ b/maven-core/src/test/java/org/apache/maven/toolchain/DefaultToolchainManagerPrivateTest.java
@@ -79,8 +79,10 @@ public class DefaultToolchainManagerPrivateTest
         when( session.getRequest() ).thenReturn( req );
 
         ToolchainPrivate basicToolchain = mock( ToolchainPrivate.class );
+        when( basicToolchain.getType() ).thenReturn( "basic" );
         when( toolchainFactory_basicType.createDefaultToolchain() ).thenReturn( basicToolchain );
         ToolchainPrivate rareToolchain = mock( ToolchainPrivate.class );
+        when( rareToolchain.getType() ).thenReturn( "rare" );
         when( toolchainFactory_rareType.createDefaultToolchain() ).thenReturn( rareToolchain );
 
         // execute
@@ -101,8 +103,10 @@ public class DefaultToolchainManagerPrivateTest
         when( session.getRequest() ).thenReturn( req );
 
         ToolchainPrivate basicToolchain = mock( ToolchainPrivate.class );
+        when( basicToolchain.getType() ).thenReturn( "basic" );
         when( toolchainFactory_basicType.createDefaultToolchain() ).thenReturn( basicToolchain );
         ToolchainPrivate rareToolchain = mock( ToolchainPrivate.class );
+        when( rareToolchain.getType() ).thenReturn( "rare" );
         when( toolchainFactory_rareType.createDefaultToolchain() ).thenReturn( rareToolchain );
 
         // execute
@@ -124,18 +128,25 @@ public class DefaultToolchainManagerPrivateTest
         Map<String, List<ToolchainModel>> groupedToolchains = new HashMap<>();
         req.setToolchains( groupedToolchains );
 
+        ToolchainPrivate basicToolchain = mock( ToolchainPrivate.class );
+        when( basicToolchain.getType() ).thenReturn( "basic" );
+        ToolchainPrivate rareToolchain = mock( ToolchainPrivate.class );
+        when( rareToolchain.getType() ).thenReturn( "rare" );
+
         List<ToolchainModel> basicToolchains = new ArrayList<>();
         ToolchainModel basicToolchainModel = new ToolchainModel();
         basicToolchainModel.setType( "basic" );
         basicToolchains.add( basicToolchainModel );
         basicToolchains.add( basicToolchainModel );
         groupedToolchains.put( "basic", basicToolchains );
+        when( toolchainFactory_basicType.createToolchain( basicToolchainModel ) ).thenReturn( basicToolchain );
 
         List<ToolchainModel> rareToolchains = new ArrayList<>();
         ToolchainModel rareToolchainModel = new ToolchainModel();
         rareToolchainModel.setType( "rare" );
         rareToolchains.add( rareToolchainModel );
         groupedToolchains.put( "rare", rareToolchains );
+        when( toolchainFactory_rareType.createToolchain( rareToolchainModel ) ).thenReturn( rareToolchain );
 
         // execute
         ToolchainPrivate[] toolchains = toolchainManager.getToolchainsForType( "basic", session );
diff --git a/maven-core-impl/src/test/resources/repo/jdom/jdom/1.0/jdom-1.0.jar b/maven-core/src/test/resources/apiv4-repo/1.0/jdom-1.0.jar
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/jdom/jdom/1.0/jdom-1.0.jar
rename to maven-core/src/test/resources/apiv4-repo/1.0/jdom-1.0.jar
diff --git a/maven-core-impl/src/test/resources/repo/jdom/jdom/1.0/jdom-1.0.jar.sha1 b/maven-core/src/test/resources/apiv4-repo/1.0/jdom-1.0.jar.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/jdom/jdom/1.0/jdom-1.0.jar.sha1
rename to maven-core/src/test/resources/apiv4-repo/1.0/jdom-1.0.jar.sha1
diff --git a/maven-core-impl/src/test/resources/repo/jdom/jdom/1.0/jdom-1.0.pom b/maven-core/src/test/resources/apiv4-repo/1.0/jdom-1.0.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/jdom/jdom/1.0/jdom-1.0.pom
rename to maven-core/src/test/resources/apiv4-repo/1.0/jdom-1.0.pom
diff --git a/maven-core-impl/src/test/resources/repo/jdom/jdom/1.0/jdom-1.0.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/1.0/jdom-1.0.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/jdom/jdom/1.0/jdom-1.0.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/1.0/jdom-1.0.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/de/zeigermann/xml/xml-im-exporter/1.1/xml-im-exporter-1.1.jar b/maven-core/src/test/resources/apiv4-repo/1.1/xml-im-exporter-1.1.jar
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/de/zeigermann/xml/xml-im-exporter/1.1/xml-im-exporter-1.1.jar
rename to maven-core/src/test/resources/apiv4-repo/1.1/xml-im-exporter-1.1.jar
diff --git a/maven-core-impl/src/test/resources/repo/de/zeigermann/xml/xml-im-exporter/1.1/xml-im-exporter-1.1.jar.sha1 b/maven-core/src/test/resources/apiv4-repo/1.1/xml-im-exporter-1.1.jar.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/de/zeigermann/xml/xml-im-exporter/1.1/xml-im-exporter-1.1.jar.sha1
rename to maven-core/src/test/resources/apiv4-repo/1.1/xml-im-exporter-1.1.jar.sha1
diff --git a/maven-core-impl/src/test/resources/repo/de/zeigermann/xml/xml-im-exporter/1.1/xml-im-exporter-1.1.pom b/maven-core/src/test/resources/apiv4-repo/1.1/xml-im-exporter-1.1.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/de/zeigermann/xml/xml-im-exporter/1.1/xml-im-exporter-1.1.pom
rename to maven-core/src/test/resources/apiv4-repo/1.1/xml-im-exporter-1.1.pom
diff --git a/maven-core-impl/src/test/resources/repo/de/zeigermann/xml/xml-im-exporter/1.1/xml-im-exporter-1.1.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/1.1/xml-im-exporter-1.1.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/de/zeigermann/xml/xml-im-exporter/1.1/xml-im-exporter-1.1.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/1.1/xml-im-exporter-1.1.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/commons-httpclient/commons-httpclient/2.0.2/commons-httpclient-2.0.2.jar b/maven-core/src/test/resources/apiv4-repo/2.0.2/commons-httpclient-2.0.2.jar
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/commons-httpclient/commons-httpclient/2.0.2/commons-httpclient-2.0.2.jar
rename to maven-core/src/test/resources/apiv4-repo/2.0.2/commons-httpclient-2.0.2.jar
diff --git a/maven-core-impl/src/test/resources/repo/commons-httpclient/commons-httpclient/2.0.2/commons-httpclient-2.0.2.jar.sha1 b/maven-core/src/test/resources/apiv4-repo/2.0.2/commons-httpclient-2.0.2.jar.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/commons-httpclient/commons-httpclient/2.0.2/commons-httpclient-2.0.2.jar.sha1
rename to maven-core/src/test/resources/apiv4-repo/2.0.2/commons-httpclient-2.0.2.jar.sha1
diff --git a/maven-core-impl/src/test/resources/repo/commons-httpclient/commons-httpclient/2.0.2/commons-httpclient-2.0.2.pom b/maven-core/src/test/resources/apiv4-repo/2.0.2/commons-httpclient-2.0.2.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/commons-httpclient/commons-httpclient/2.0.2/commons-httpclient-2.0.2.pom
rename to maven-core/src/test/resources/apiv4-repo/2.0.2/commons-httpclient-2.0.2.pom
diff --git a/maven-core-impl/src/test/resources/repo/commons-httpclient/commons-httpclient/2.0.2/commons-httpclient-2.0.2.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/2.0.2/commons-httpclient-2.0.2.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/commons-httpclient/commons-httpclient/2.0.2/commons-httpclient-2.0.2.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/2.0.2/commons-httpclient-2.0.2.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/slide/slide-webdavlib/2.1/slide-webdavlib-2.1.jar b/maven-core/src/test/resources/apiv4-repo/2.1/slide-webdavlib-2.1.jar
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/slide/slide-webdavlib/2.1/slide-webdavlib-2.1.jar
rename to maven-core/src/test/resources/apiv4-repo/2.1/slide-webdavlib-2.1.jar
diff --git a/maven-core-impl/src/test/resources/repo/slide/slide-webdavlib/2.1/slide-webdavlib-2.1.jar.md5 b/maven-core/src/test/resources/apiv4-repo/2.1/slide-webdavlib-2.1.jar.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/slide/slide-webdavlib/2.1/slide-webdavlib-2.1.jar.md5
rename to maven-core/src/test/resources/apiv4-repo/2.1/slide-webdavlib-2.1.jar.md5
diff --git a/maven-core-impl/src/test/resources/repo/slide/slide-webdavlib/2.1/slide-webdavlib-2.1.jar.sha1 b/maven-core/src/test/resources/apiv4-repo/2.1/slide-webdavlib-2.1.jar.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/slide/slide-webdavlib/2.1/slide-webdavlib-2.1.jar.sha1
rename to maven-core/src/test/resources/apiv4-repo/2.1/slide-webdavlib-2.1.jar.sha1
diff --git a/maven-core-impl/src/test/resources/repo/slide/slide-webdavlib/2.1/slide-webdavlib-2.1.pom b/maven-core/src/test/resources/apiv4-repo/2.1/slide-webdavlib-2.1.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/slide/slide-webdavlib/2.1/slide-webdavlib-2.1.pom
rename to maven-core/src/test/resources/apiv4-repo/2.1/slide-webdavlib-2.1.pom
diff --git a/maven-core-impl/src/test/resources/repo/slide/slide-webdavlib/2.1/slide-webdavlib-2.1.pom.md5 b/maven-core/src/test/resources/apiv4-repo/2.1/slide-webdavlib-2.1.pom.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/slide/slide-webdavlib/2.1/slide-webdavlib-2.1.pom.md5
rename to maven-core/src/test/resources/apiv4-repo/2.1/slide-webdavlib-2.1.pom.md5
diff --git a/maven-core-impl/src/test/resources/repo/slide/slide-webdavlib/2.1/slide-webdavlib-2.1.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/2.1/slide-webdavlib-2.1.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/slide/slide-webdavlib/2.1/slide-webdavlib-2.1.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/2.1/slide-webdavlib-2.1.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/junit/junit/4.13.1/junit-4.13.1-javadoc-resources.jar.lastUpdated b/maven-core/src/test/resources/apiv4-repo/4.13.1/junit-4.13.1-javadoc-resources.jar.lastUpdated
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/junit/junit/4.13.1/junit-4.13.1-javadoc-resources.jar.lastUpdated
rename to maven-core/src/test/resources/apiv4-repo/4.13.1/junit-4.13.1-javadoc-resources.jar.lastUpdated
diff --git a/maven-core-impl/src/test/resources/repo/junit/junit/4.13.1/junit-4.13.1-javadoc.jar b/maven-core/src/test/resources/apiv4-repo/4.13.1/junit-4.13.1-javadoc.jar
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/junit/junit/4.13.1/junit-4.13.1-javadoc.jar
rename to maven-core/src/test/resources/apiv4-repo/4.13.1/junit-4.13.1-javadoc.jar
diff --git a/maven-core-impl/src/test/resources/repo/junit/junit/4.13.1/junit-4.13.1-javadoc.jar.sha1 b/maven-core/src/test/resources/apiv4-repo/4.13.1/junit-4.13.1-javadoc.jar.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/junit/junit/4.13.1/junit-4.13.1-javadoc.jar.sha1
rename to maven-core/src/test/resources/apiv4-repo/4.13.1/junit-4.13.1-javadoc.jar.sha1
diff --git a/maven-core-impl/src/test/resources/repo/junit/junit/4.13.1/junit-4.13.1-sources.jar b/maven-core/src/test/resources/apiv4-repo/4.13.1/junit-4.13.1-sources.jar
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/junit/junit/4.13.1/junit-4.13.1-sources.jar
rename to maven-core/src/test/resources/apiv4-repo/4.13.1/junit-4.13.1-sources.jar
diff --git a/maven-core-impl/src/test/resources/repo/junit/junit/4.13.1/junit-4.13.1-sources.jar.sha1 b/maven-core/src/test/resources/apiv4-repo/4.13.1/junit-4.13.1-sources.jar.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/junit/junit/4.13.1/junit-4.13.1-sources.jar.sha1
rename to maven-core/src/test/resources/apiv4-repo/4.13.1/junit-4.13.1-sources.jar.sha1
diff --git a/maven-core-impl/src/test/resources/repo/junit/junit/4.13.1/junit-4.13.1.jar b/maven-core/src/test/resources/apiv4-repo/4.13.1/junit-4.13.1.jar
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/junit/junit/4.13.1/junit-4.13.1.jar
rename to maven-core/src/test/resources/apiv4-repo/4.13.1/junit-4.13.1.jar
diff --git a/maven-core-impl/src/test/resources/repo/junit/junit/4.13.1/junit-4.13.1.jar.sha1 b/maven-core/src/test/resources/apiv4-repo/4.13.1/junit-4.13.1.jar.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/junit/junit/4.13.1/junit-4.13.1.jar.sha1
rename to maven-core/src/test/resources/apiv4-repo/4.13.1/junit-4.13.1.jar.sha1
diff --git a/maven-core-impl/src/test/resources/repo/junit/junit/4.13.1/junit-4.13.1.pom b/maven-core/src/test/resources/apiv4-repo/4.13.1/junit-4.13.1.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/junit/junit/4.13.1/junit-4.13.1.pom
rename to maven-core/src/test/resources/apiv4-repo/4.13.1/junit-4.13.1.pom
diff --git a/maven-core-impl/src/test/resources/repo/junit/junit/4.13.1/junit-4.13.1.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/4.13.1/junit-4.13.1.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/junit/junit/4.13.1/junit-4.13.1.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/4.13.1/junit-4.13.1.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/commons-logging/commons-logging/1.0.3/commons-logging-1.0.3.jar b/maven-core/src/test/resources/apiv4-repo/commons-logging/1.0.3/commons-logging-1.0.3.jar
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/commons-logging/commons-logging/1.0.3/commons-logging-1.0.3.jar
rename to maven-core/src/test/resources/apiv4-repo/commons-logging/1.0.3/commons-logging-1.0.3.jar
diff --git a/maven-core-impl/src/test/resources/repo/commons-logging/commons-logging/1.0.3/commons-logging-1.0.3.jar.sha1 b/maven-core/src/test/resources/apiv4-repo/commons-logging/1.0.3/commons-logging-1.0.3.jar.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/commons-logging/commons-logging/1.0.3/commons-logging-1.0.3.jar.sha1
rename to maven-core/src/test/resources/apiv4-repo/commons-logging/1.0.3/commons-logging-1.0.3.jar.sha1
diff --git a/maven-core-impl/src/test/resources/repo/commons-logging/commons-logging/1.0.3/commons-logging-1.0.3.pom b/maven-core/src/test/resources/apiv4-repo/commons-logging/1.0.3/commons-logging-1.0.3.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/commons-logging/commons-logging/1.0.3/commons-logging-1.0.3.pom
rename to maven-core/src/test/resources/apiv4-repo/commons-logging/1.0.3/commons-logging-1.0.3.pom
diff --git a/maven-core-impl/src/test/resources/repo/commons-logging/commons-logging/1.0.3/commons-logging-1.0.3.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/commons-logging/1.0.3/commons-logging-1.0.3.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/commons-logging/commons-logging/1.0.3/commons-logging-1.0.3.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/commons-logging/1.0.3/commons-logging-1.0.3.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4-javadoc-resources.jar.lastUpdated b/maven-core/src/test/resources/apiv4-repo/commons-logging/1.0.4/commons-logging-1.0.4-javadoc-resources.jar.lastUpdated
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4-javadoc-resources.jar.lastUpdated
rename to maven-core/src/test/resources/apiv4-repo/commons-logging/1.0.4/commons-logging-1.0.4-javadoc-resources.jar.lastUpdated
diff --git a/maven-core-impl/src/test/resources/repo/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar b/maven-core/src/test/resources/apiv4-repo/commons-logging/1.0.4/commons-logging-1.0.4.jar
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar
rename to maven-core/src/test/resources/apiv4-repo/commons-logging/1.0.4/commons-logging-1.0.4.jar
diff --git a/maven-core-impl/src/test/resources/repo/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar.sha1 b/maven-core/src/test/resources/apiv4-repo/commons-logging/1.0.4/commons-logging-1.0.4.jar.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar.sha1
rename to maven-core/src/test/resources/apiv4-repo/commons-logging/1.0.4/commons-logging-1.0.4.jar.sha1
diff --git a/maven-core-impl/src/test/resources/repo/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.pom b/maven-core/src/test/resources/apiv4-repo/commons-logging/1.0.4/commons-logging-1.0.4.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.pom
rename to maven-core/src/test/resources/apiv4-repo/commons-logging/1.0.4/commons-logging-1.0.4.pom
diff --git a/maven-core-impl/src/test/resources/repo/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/commons-logging/1.0.4/commons-logging-1.0.4.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/commons-logging/1.0.4/commons-logging-1.0.4.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/apache/3/apache-3.pom b/maven-core/src/test/resources/apiv4-repo/org/apache/apache/3/apache-3.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/apache/3/apache-3.pom
rename to maven-core/src/test/resources/apiv4-repo/org/apache/apache/3/apache-3.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/apache/3/apache-3.pom.md5 b/maven-core/src/test/resources/apiv4-repo/org/apache/apache/3/apache-3.pom.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/apache/3/apache-3.pom.md5
rename to maven-core/src/test/resources/apiv4-repo/org/apache/apache/3/apache-3.pom.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/apache/3/apache-3.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/apache/apache/3/apache-3.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/apache/3/apache-3.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/apache/apache/3/apache-3.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/artifact/maven-artifact/3.0-SNAPSHOT/maven-artifact-3.0-SNAPSHOT.jar b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/artifact/maven-artifact/3.0-SNAPSHOT/maven-artifact-3.0-SNAPSHOT.jar
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/artifact/maven-artifact/3.0-SNAPSHOT/maven-artifact-3.0-SNAPSHOT.jar
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/artifact/maven-artifact/3.0-SNAPSHOT/maven-artifact-3.0-SNAPSHOT.jar
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/artifact/maven-artifact/3.0-SNAPSHOT/maven-artifact-3.0-SNAPSHOT.jar.md5 b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/artifact/maven-artifact/3.0-SNAPSHOT/maven-artifact-3.0-SNAPSHOT.jar.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/artifact/maven-artifact/3.0-SNAPSHOT/maven-artifact-3.0-SNAPSHOT.jar.md5
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/artifact/maven-artifact/3.0-SNAPSHOT/maven-artifact-3.0-SNAPSHOT.jar.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/artifact/maven-artifact/3.0-SNAPSHOT/maven-artifact-3.0-SNAPSHOT.jar.sha1 b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/artifact/maven-artifact/3.0-SNAPSHOT/maven-artifact-3.0-SNAPSHOT.jar.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/artifact/maven-artifact/3.0-SNAPSHOT/maven-artifact-3.0-SNAPSHOT.jar.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/artifact/maven-artifact/3.0-SNAPSHOT/maven-artifact-3.0-SNAPSHOT.jar.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/artifact/maven-artifact/3.0-SNAPSHOT/maven-artifact-3.0-SNAPSHOT.pom b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/artifact/maven-artifact/3.0-SNAPSHOT/maven-artifact-3.0-SNAPSHOT.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/artifact/maven-artifact/3.0-SNAPSHOT/maven-artifact-3.0-SNAPSHOT.pom
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/artifact/maven-artifact/3.0-SNAPSHOT/maven-artifact-3.0-SNAPSHOT.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/artifact/maven-artifact/3.0-SNAPSHOT/maven-artifact-3.0-SNAPSHOT.pom.md5 b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/artifact/maven-artifact/3.0-SNAPSHOT/maven-artifact-3.0-SNAPSHOT.pom.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/artifact/maven-artifact/3.0-SNAPSHOT/maven-artifact-3.0-SNAPSHOT.pom.md5
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/artifact/maven-artifact/3.0-SNAPSHOT/maven-artifact-3.0-SNAPSHOT.pom.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/artifact/maven-artifact/3.0-SNAPSHOT/maven-artifact-3.0-SNAPSHOT.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/artifact/maven-artifact/3.0-SNAPSHOT/maven-artifact-3.0-SNAPSHOT.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/artifact/maven-artifact/3.0-SNAPSHOT/maven-artifact-3.0-SNAPSHOT.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/artifact/maven-artifact/3.0-SNAPSHOT/maven-artifact-3.0-SNAPSHOT.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/core/test/test-extension/1/test-extension-1.jar b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/core/test/test-extension/1/test-extension-1.jar
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/core/test/test-extension/1/test-extension-1.jar
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/core/test/test-extension/1/test-extension-1.jar
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/core/test/test-extension/1/test-extension-1.pom b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/core/test/test-extension/1/test-extension-1.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/core/test/test-extension/1/test-extension-1.pom
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/core/test/test-extension/1/test-extension-1.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/core/test/test-extension/1/test-extension-1.pom.md5 b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/core/test/test-extension/1/test-extension-1.pom.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/core/test/test-extension/1/test-extension-1.pom.md5
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/core/test/test-extension/1/test-extension-1.pom.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/core/test/test-extension/1/test-extension-1.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/core/test/test-extension/1/test-extension-1.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/core/test/test-extension/1/test-extension-1.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/core/test/test-extension/1/test-extension-1.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.jar b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.jar
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.jar
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.jar
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom.md5 b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom.md5
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/core/test/test-lifecycle-and-artifactHandler/1/test-lifecycle-and-artifactHandler-1.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/maven-parent/4/maven-parent-4.pom b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/maven-parent/4/maven-parent-4.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/maven-parent/4/maven-parent-4.pom
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/maven-parent/4/maven-parent-4.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/maven-parent/4/maven-parent-4.pom.md5 b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/maven-parent/4/maven-parent-4.pom.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/maven-parent/4/maven-parent-4.pom.md5
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/maven-parent/4/maven-parent-4.pom.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/maven-parent/4/maven-parent-4.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/maven-parent/4/maven-parent-4.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/maven-parent/4/maven-parent-4.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/maven-parent/4/maven-parent-4.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/maven-parent/5/maven-parent-5.pom b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/maven-parent/5/maven-parent-5.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/maven-parent/5/maven-parent-5.pom
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/maven-parent/5/maven-parent-5.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/maven-parent/5/maven-parent-5.pom.md5 b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/maven-parent/5/maven-parent-5.pom.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/maven-parent/5/maven-parent-5.pom.md5
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/maven-parent/5/maven-parent-5.pom.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/maven-parent/5/maven-parent-5.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/maven-parent/5/maven-parent-5.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/maven-parent/5/maven-parent-5.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/maven-parent/5/maven-parent-5.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.jar b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.jar
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.jar
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.jar
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.jar.md5 b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.jar.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.jar.md5
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.jar.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.jar.sha1 b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.jar.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.jar.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.jar.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.pom b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.pom
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.pom.md5 b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.pom.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.pom.md5
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.pom.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-providers/1.0-beta-2/wagon-providers-1.0-beta-2.pom b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-providers/1.0-beta-2/wagon-providers-1.0-beta-2.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-providers/1.0-beta-2/wagon-providers-1.0-beta-2.pom
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-providers/1.0-beta-2/wagon-providers-1.0-beta-2.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-providers/1.0-beta-2/wagon-providers-1.0-beta-2.pom.md5 b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-providers/1.0-beta-2/wagon-providers-1.0-beta-2.pom.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-providers/1.0-beta-2/wagon-providers-1.0-beta-2.pom.md5
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-providers/1.0-beta-2/wagon-providers-1.0-beta-2.pom.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-providers/1.0-beta-2/wagon-providers-1.0-beta-2.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-providers/1.0-beta-2/wagon-providers-1.0-beta-2.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-providers/1.0-beta-2/wagon-providers-1.0-beta-2.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-providers/1.0-beta-2/wagon-providers-1.0-beta-2.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-webdav/1.0-beta-2/wagon-webdav-1.0-beta-2.jar b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-webdav/1.0-beta-2/wagon-webdav-1.0-beta-2.jar
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-webdav/1.0-beta-2/wagon-webdav-1.0-beta-2.jar
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-webdav/1.0-beta-2/wagon-webdav-1.0-beta-2.jar
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-webdav/1.0-beta-2/wagon-webdav-1.0-beta-2.jar.md5 b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-webdav/1.0-beta-2/wagon-webdav-1.0-beta-2.jar.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-webdav/1.0-beta-2/wagon-webdav-1.0-beta-2.jar.md5
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-webdav/1.0-beta-2/wagon-webdav-1.0-beta-2.jar.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-webdav/1.0-beta-2/wagon-webdav-1.0-beta-2.jar.sha1 b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-webdav/1.0-beta-2/wagon-webdav-1.0-beta-2.jar.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-webdav/1.0-beta-2/wagon-webdav-1.0-beta-2.jar.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-webdav/1.0-beta-2/wagon-webdav-1.0-beta-2.jar.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-webdav/1.0-beta-2/wagon-webdav-1.0-beta-2.pom b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-webdav/1.0-beta-2/wagon-webdav-1.0-beta-2.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-webdav/1.0-beta-2/wagon-webdav-1.0-beta-2.pom
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-webdav/1.0-beta-2/wagon-webdav-1.0-beta-2.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-webdav/1.0-beta-2/wagon-webdav-1.0-beta-2.pom.md5 b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-webdav/1.0-beta-2/wagon-webdav-1.0-beta-2.pom.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-webdav/1.0-beta-2/wagon-webdav-1.0-beta-2.pom.md5
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-webdav/1.0-beta-2/wagon-webdav-1.0-beta-2.pom.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-webdav/1.0-beta-2/wagon-webdav-1.0-beta-2.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-webdav/1.0-beta-2/wagon-webdav-1.0-beta-2.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon-webdav/1.0-beta-2/wagon-webdav-1.0-beta-2.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon-webdav/1.0-beta-2/wagon-webdav-1.0-beta-2.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon/1.0-beta-2/wagon-1.0-beta-2.pom b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon/1.0-beta-2/wagon-1.0-beta-2.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon/1.0-beta-2/wagon-1.0-beta-2.pom
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon/1.0-beta-2/wagon-1.0-beta-2.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon/1.0-beta-2/wagon-1.0-beta-2.pom.md5 b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon/1.0-beta-2/wagon-1.0-beta-2.pom.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon/1.0-beta-2/wagon-1.0-beta-2.pom.md5
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon/1.0-beta-2/wagon-1.0-beta-2.pom.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon/1.0-beta-2/wagon-1.0-beta-2.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon/1.0-beta-2/wagon-1.0-beta-2.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/apache/maven/wagon/wagon/1.0-beta-2/wagon-1.0-beta-2.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/apache/maven/wagon/wagon/1.0-beta-2/wagon-1.0-beta-2.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-active-collections/1.0-beta-1/plexus-active-collections-1.0-beta-1.jar b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-active-collections/1.0-beta-1/plexus-active-collections-1.0-beta-1.jar
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-active-collections/1.0-beta-1/plexus-active-collections-1.0-beta-1.jar
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-active-collections/1.0-beta-1/plexus-active-collections-1.0-beta-1.jar
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-active-collections/1.0-beta-1/plexus-active-collections-1.0-beta-1.jar.md5 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-active-collections/1.0-beta-1/plexus-active-collections-1.0-beta-1.jar.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-active-collections/1.0-beta-1/plexus-active-collections-1.0-beta-1.jar.md5
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-active-collections/1.0-beta-1/plexus-active-collections-1.0-beta-1.jar.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-active-collections/1.0-beta-1/plexus-active-collections-1.0-beta-1.jar.sha1 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-active-collections/1.0-beta-1/plexus-active-collections-1.0-beta-1.jar.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-active-collections/1.0-beta-1/plexus-active-collections-1.0-beta-1.jar.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-active-collections/1.0-beta-1/plexus-active-collections-1.0-beta-1.jar.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-active-collections/1.0-beta-1/plexus-active-collections-1.0-beta-1.pom b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-active-collections/1.0-beta-1/plexus-active-collections-1.0-beta-1.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-active-collections/1.0-beta-1/plexus-active-collections-1.0-beta-1.pom
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-active-collections/1.0-beta-1/plexus-active-collections-1.0-beta-1.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-active-collections/1.0-beta-1/plexus-active-collections-1.0-beta-1.pom.md5 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-active-collections/1.0-beta-1/plexus-active-collections-1.0-beta-1.pom.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-active-collections/1.0-beta-1/plexus-active-collections-1.0-beta-1.pom.md5
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-active-collections/1.0-beta-1/plexus-active-collections-1.0-beta-1.pom.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-active-collections/1.0-beta-1/plexus-active-collections-1.0-beta-1.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-active-collections/1.0-beta-1/plexus-active-collections-1.0-beta-1.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-active-collections/1.0-beta-1/plexus-active-collections-1.0-beta-1.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-active-collections/1.0-beta-1/plexus-active-collections-1.0-beta-1.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-10/plexus-classworlds-1.2-alpha-10.jar b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-10/plexus-classworlds-1.2-alpha-10.jar
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-10/plexus-classworlds-1.2-alpha-10.jar
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-10/plexus-classworlds-1.2-alpha-10.jar
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-10/plexus-classworlds-1.2-alpha-10.jar.md5 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-10/plexus-classworlds-1.2-alpha-10.jar.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-10/plexus-classworlds-1.2-alpha-10.jar.md5
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-10/plexus-classworlds-1.2-alpha-10.jar.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-10/plexus-classworlds-1.2-alpha-10.jar.sha1 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-10/plexus-classworlds-1.2-alpha-10.jar.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-10/plexus-classworlds-1.2-alpha-10.jar.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-10/plexus-classworlds-1.2-alpha-10.jar.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-10/plexus-classworlds-1.2-alpha-10.pom b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-10/plexus-classworlds-1.2-alpha-10.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-10/plexus-classworlds-1.2-alpha-10.pom
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-10/plexus-classworlds-1.2-alpha-10.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-10/plexus-classworlds-1.2-alpha-10.pom.md5 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-10/plexus-classworlds-1.2-alpha-10.pom.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-10/plexus-classworlds-1.2-alpha-10.pom.md5
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-10/plexus-classworlds-1.2-alpha-10.pom.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-10/plexus-classworlds-1.2-alpha-10.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-10/plexus-classworlds-1.2-alpha-10.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-10/plexus-classworlds-1.2-alpha-10.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-10/plexus-classworlds-1.2-alpha-10.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.jar b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.jar
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.jar
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.jar
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.jar.md5 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.jar.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.jar.md5
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.jar.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.jar.sha1 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.jar.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.jar.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.jar.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.pom b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.pom
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.pom.md5 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.pom.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.pom.md5
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.pom.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-16/plexus-component-api-1.0-alpha-16.jar b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-16/plexus-component-api-1.0-alpha-16.jar
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-16/plexus-component-api-1.0-alpha-16.jar
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-16/plexus-component-api-1.0-alpha-16.jar
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-16/plexus-component-api-1.0-alpha-16.jar.md5 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-16/plexus-component-api-1.0-alpha-16.jar.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-16/plexus-component-api-1.0-alpha-16.jar.md5
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-16/plexus-component-api-1.0-alpha-16.jar.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-16/plexus-component-api-1.0-alpha-16.jar.sha1 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-16/plexus-component-api-1.0-alpha-16.jar.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-16/plexus-component-api-1.0-alpha-16.jar.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-16/plexus-component-api-1.0-alpha-16.jar.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-16/plexus-component-api-1.0-alpha-16.pom b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-16/plexus-component-api-1.0-alpha-16.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-16/plexus-component-api-1.0-alpha-16.pom
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-16/plexus-component-api-1.0-alpha-16.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-16/plexus-component-api-1.0-alpha-16.pom.md5 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-16/plexus-component-api-1.0-alpha-16.pom.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-16/plexus-component-api-1.0-alpha-16.pom.md5
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-16/plexus-component-api-1.0-alpha-16.pom.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-16/plexus-component-api-1.0-alpha-16.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-16/plexus-component-api-1.0-alpha-16.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-16/plexus-component-api-1.0-alpha-16.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-16/plexus-component-api-1.0-alpha-16.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-32/plexus-component-api-1.0-alpha-32.jar b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-32/plexus-component-api-1.0-alpha-32.jar
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-32/plexus-component-api-1.0-alpha-32.jar
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-32/plexus-component-api-1.0-alpha-32.jar
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-32/plexus-component-api-1.0-alpha-32.jar.md5 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-32/plexus-component-api-1.0-alpha-32.jar.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-32/plexus-component-api-1.0-alpha-32.jar.md5
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-32/plexus-component-api-1.0-alpha-32.jar.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-32/plexus-component-api-1.0-alpha-32.jar.sha1 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-32/plexus-component-api-1.0-alpha-32.jar.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-32/plexus-component-api-1.0-alpha-32.jar.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-32/plexus-component-api-1.0-alpha-32.jar.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-32/plexus-component-api-1.0-alpha-32.pom b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-32/plexus-component-api-1.0-alpha-32.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-32/plexus-component-api-1.0-alpha-32.pom
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-32/plexus-component-api-1.0-alpha-32.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-32/plexus-component-api-1.0-alpha-32.pom.md5 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-32/plexus-component-api-1.0-alpha-32.pom.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-32/plexus-component-api-1.0-alpha-32.pom.md5
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-32/plexus-component-api-1.0-alpha-32.pom.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-32/plexus-component-api-1.0-alpha-32.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-32/plexus-component-api-1.0-alpha-32.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-32/plexus-component-api-1.0-alpha-32.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-component-api/1.0-alpha-32/plexus-component-api-1.0-alpha-32.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-components/1.1.6/plexus-components-1.1.6.pom b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-components/1.1.6/plexus-components-1.1.6.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-components/1.1.6/plexus-components-1.1.6.pom
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-components/1.1.6/plexus-components-1.1.6.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-components/1.1.6/plexus-components-1.1.6.pom.md5 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-components/1.1.6/plexus-components-1.1.6.pom.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-components/1.1.6/plexus-components-1.1.6.pom.md5
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-components/1.1.6/plexus-components-1.1.6.pom.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-components/1.1.6/plexus-components-1.1.6.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-components/1.1.6/plexus-components-1.1.6.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-components/1.1.6/plexus-components-1.1.6.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-components/1.1.6/plexus-components-1.1.6.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-16/plexus-container-default-1.0-alpha-16.jar b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-16/plexus-container-default-1.0-alpha-16.jar
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-16/plexus-container-default-1.0-alpha-16.jar
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-16/plexus-container-default-1.0-alpha-16.jar
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-16/plexus-container-default-1.0-alpha-16.jar.md5 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-16/plexus-container-default-1.0-alpha-16.jar.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-16/plexus-container-default-1.0-alpha-16.jar.md5
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-16/plexus-container-default-1.0-alpha-16.jar.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-16/plexus-container-default-1.0-alpha-16.jar.sha1 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-16/plexus-container-default-1.0-alpha-16.jar.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-16/plexus-container-default-1.0-alpha-16.jar.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-16/plexus-container-default-1.0-alpha-16.jar.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-16/plexus-container-default-1.0-alpha-16.pom b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-16/plexus-container-default-1.0-alpha-16.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-16/plexus-container-default-1.0-alpha-16.pom
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-16/plexus-container-default-1.0-alpha-16.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-16/plexus-container-default-1.0-alpha-16.pom.md5 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-16/plexus-container-default-1.0-alpha-16.pom.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-16/plexus-container-default-1.0-alpha-16.pom.md5
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-16/plexus-container-default-1.0-alpha-16.pom.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-16/plexus-container-default-1.0-alpha-16.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-16/plexus-container-default-1.0-alpha-16.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-16/plexus-container-default-1.0-alpha-16.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-16/plexus-container-default-1.0-alpha-16.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-32/plexus-container-default-1.0-alpha-32.jar b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-32/plexus-container-default-1.0-alpha-32.jar
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-32/plexus-container-default-1.0-alpha-32.jar
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-32/plexus-container-default-1.0-alpha-32.jar
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-32/plexus-container-default-1.0-alpha-32.jar.md5 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-32/plexus-container-default-1.0-alpha-32.jar.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-32/plexus-container-default-1.0-alpha-32.jar.md5
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-32/plexus-container-default-1.0-alpha-32.jar.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-32/plexus-container-default-1.0-alpha-32.jar.sha1 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-32/plexus-container-default-1.0-alpha-32.jar.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-32/plexus-container-default-1.0-alpha-32.jar.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-32/plexus-container-default-1.0-alpha-32.jar.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-32/plexus-container-default-1.0-alpha-32.pom b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-32/plexus-container-default-1.0-alpha-32.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-32/plexus-container-default-1.0-alpha-32.pom
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-32/plexus-container-default-1.0-alpha-32.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-32/plexus-container-default-1.0-alpha-32.pom.md5 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-32/plexus-container-default-1.0-alpha-32.pom.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-32/plexus-container-default-1.0-alpha-32.pom.md5
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-32/plexus-container-default-1.0-alpha-32.pom.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-32/plexus-container-default-1.0-alpha-32.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-32/plexus-container-default-1.0-alpha-32.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-32/plexus-container-default-1.0-alpha-32.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-container-default/1.0-alpha-32/plexus-container-default-1.0-alpha-32.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-containers/1.0-alpha-16/plexus-containers-1.0-alpha-16.pom b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-containers/1.0-alpha-16/plexus-containers-1.0-alpha-16.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-containers/1.0-alpha-16/plexus-containers-1.0-alpha-16.pom
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-containers/1.0-alpha-16/plexus-containers-1.0-alpha-16.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-containers/1.0-alpha-16/plexus-containers-1.0-alpha-16.pom.md5 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-containers/1.0-alpha-16/plexus-containers-1.0-alpha-16.pom.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-containers/1.0-alpha-16/plexus-containers-1.0-alpha-16.pom.md5
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-containers/1.0-alpha-16/plexus-containers-1.0-alpha-16.pom.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-containers/1.0-alpha-16/plexus-containers-1.0-alpha-16.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-containers/1.0-alpha-16/plexus-containers-1.0-alpha-16.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-containers/1.0-alpha-16/plexus-containers-1.0-alpha-16.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-containers/1.0-alpha-16/plexus-containers-1.0-alpha-16.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-containers/1.0-alpha-32/plexus-containers-1.0-alpha-32.pom b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-containers/1.0-alpha-32/plexus-containers-1.0-alpha-32.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-containers/1.0-alpha-32/plexus-containers-1.0-alpha-32.pom
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-containers/1.0-alpha-32/plexus-containers-1.0-alpha-32.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-containers/1.0-alpha-32/plexus-containers-1.0-alpha-32.pom.md5 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-containers/1.0-alpha-32/plexus-containers-1.0-alpha-32.pom.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-containers/1.0-alpha-32/plexus-containers-1.0-alpha-32.pom.md5
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-containers/1.0-alpha-32/plexus-containers-1.0-alpha-32.pom.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-containers/1.0-alpha-32/plexus-containers-1.0-alpha-32.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-containers/1.0-alpha-32/plexus-containers-1.0-alpha-32.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-containers/1.0-alpha-32/plexus-containers-1.0-alpha-32.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-containers/1.0-alpha-32/plexus-containers-1.0-alpha-32.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.jar b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.jar
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.jar
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.jar
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.jar.sha1 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.jar.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.jar.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.jar.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.pom b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.pom
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar.md5 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar.md5
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar.sha1 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.pom b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.pom
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.pom.md5 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.pom.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.pom.md5
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.pom.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.jar b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.jar
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.jar
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.jar
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.jar.md5 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.jar.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.jar.md5
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.jar.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.jar.sha1 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.jar.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.jar.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.jar.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom.md5 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom.md5
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.10/plexus-1.0.10.pom b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.10/plexus-1.0.10.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.10/plexus-1.0.10.pom
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.10/plexus-1.0.10.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.10/plexus-1.0.10.pom.md5 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.10/plexus-1.0.10.pom.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.10/plexus-1.0.10.pom.md5
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.10/plexus-1.0.10.pom.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.10/plexus-1.0.10.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.10/plexus-1.0.10.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.10/plexus-1.0.10.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.10/plexus-1.0.10.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.11/plexus-1.0.11.pom b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.11/plexus-1.0.11.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.11/plexus-1.0.11.pom
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.11/plexus-1.0.11.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.11/plexus-1.0.11.pom.md5 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.11/plexus-1.0.11.pom.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.11/plexus-1.0.11.pom.md5
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.11/plexus-1.0.11.pom.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.11/plexus-1.0.11.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.11/plexus-1.0.11.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.11/plexus-1.0.11.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.11/plexus-1.0.11.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom.md5 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom.md5
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.8/plexus-1.0.8.pom b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.8/plexus-1.0.8.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.8/plexus-1.0.8.pom
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.8/plexus-1.0.8.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.8/plexus-1.0.8.pom.md5 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.8/plexus-1.0.8.pom.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.8/plexus-1.0.8.pom.md5
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.8/plexus-1.0.8.pom.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.8/plexus-1.0.8.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.8/plexus-1.0.8.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.8/plexus-1.0.8.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.8/plexus-1.0.8.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.9/plexus-1.0.9.pom b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.9/plexus-1.0.9.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.9/plexus-1.0.9.pom
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.9/plexus-1.0.9.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.9/plexus-1.0.9.pom.md5 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.9/plexus-1.0.9.pom.md5
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.9/plexus-1.0.9.pom.md5
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.9/plexus-1.0.9.pom.md5
diff --git a/maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.9/plexus-1.0.9.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.9/plexus-1.0.9.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/codehaus/plexus/plexus/1.0.9/plexus-1.0.9.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/codehaus/plexus/plexus/1.0.9/plexus-1.0.9.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-javadoc-resources.jar.lastUpdated b/maven-core/src/test/resources/apiv4-repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-javadoc-resources.jar.lastUpdated
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-javadoc-resources.jar.lastUpdated
rename to maven-core/src/test/resources/apiv4-repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-javadoc-resources.jar.lastUpdated
diff --git a/maven-core-impl/src/test/resources/repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-javadoc.jar b/maven-core/src/test/resources/apiv4-repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-javadoc.jar
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-javadoc.jar
rename to maven-core/src/test/resources/apiv4-repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-javadoc.jar
diff --git a/maven-core-impl/src/test/resources/repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-javadoc.jar.sha1 b/maven-core/src/test/resources/apiv4-repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-javadoc.jar.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-javadoc.jar.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-javadoc.jar.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-sources.jar b/maven-core/src/test/resources/apiv4-repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-sources.jar
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-sources.jar
rename to maven-core/src/test/resources/apiv4-repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-sources.jar
diff --git a/maven-core-impl/src/test/resources/repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-sources.jar.sha1 b/maven-core/src/test/resources/apiv4-repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-sources.jar.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-sources.jar.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-sources.jar.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar b/maven-core/src/test/resources/apiv4-repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
rename to maven-core/src/test/resources/apiv4-repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
diff --git a/maven-core-impl/src/test/resources/repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar.sha1 b/maven-core/src/test/resources/apiv4-repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom b/maven-core/src/test/resources/apiv4-repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom
rename to maven-core/src/test/resources/apiv4-repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom.sha1
diff --git a/maven-core-impl/src/test/resources/repo/org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom b/maven-core/src/test/resources/apiv4-repo/org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom
rename to maven-core/src/test/resources/apiv4-repo/org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom
diff --git a/maven-core-impl/src/test/resources/repo/org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom.sha1 b/maven-core/src/test/resources/apiv4-repo/org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom.sha1
similarity index 100%
rename from maven-core-impl/src/test/resources/repo/org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom.sha1
rename to maven-core/src/test/resources/apiv4-repo/org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom.sha1
diff --git a/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/MojoDescriptor.java b/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/MojoDescriptor.java
index a15bdcf..7f49df3 100644
--- a/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/MojoDescriptor.java
+++ b/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/MojoDescriptor.java
@@ -140,6 +140,8 @@ public class MojoDescriptor
      */
     private boolean threadSafe = false;
 
+    private boolean v4Api = false;
+
     /**
      * Default constructor.
      */
@@ -462,7 +464,7 @@ public class MojoDescriptor
     /** {@inheritDoc} */
     public String getRole()
     {
-        return Mojo.ROLE;
+        return isV4Api() ? "org.apache.maven.api.plugin.Mojo" : Mojo.ROLE;
     }
 
     /** {@inheritDoc} */
@@ -699,6 +701,16 @@ public class MojoDescriptor
             || ( getExecutePhase() != null && getExecutePhase().length() > 0 );
     }
 
+    public boolean isV4Api()
+    {
+        return v4Api;
+    }
+
+    public void setV4Api( boolean v4Api )
+    {
+        this.v4Api = v4Api;
+    }
+
     /**
      * Creates a shallow copy of this mojo descriptor.
      */
diff --git a/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java b/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java
index 5747d16..a3413a0 100644
--- a/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java
+++ b/maven-plugin-api/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java
@@ -309,6 +309,13 @@ public class PluginDescriptorBuilder
             mojo.setThreadSafe( Boolean.parseBoolean( threadSafe ) );
         }
 
+        String v4Api = c.getChild( "v4Api" ).getValue();
+
+        if ( v4Api != null )
+        {
+            mojo.setV4Api( Boolean.parseBoolean( v4Api ) );
+        }
+
         // ----------------------------------------------------------------------
         // Configuration
         // ----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 83a811b..94aa25e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -87,7 +87,6 @@ under the License.
     <module>maven-model-transform</module>
     <module>maven-core-api</module>
     <module>maven-core</module>
-    <module>maven-core-impl</module>
     <module>maven-settings</module>
     <module>maven-settings-builder</module>
     <module>maven-artifact</module>