You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2019/06/22 20:57:52 UTC

[maven] branch MNG-6685 updated (259232d -> cd6ac9f)

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

michaelo pushed a change to branch MNG-6685
in repository https://gitbox.apache.org/repos/asf/maven.git.


 discard 259232d  [MNG-6685] Convert Maven Model Builder to JSR 330
     new cd6ac9f  [MNG-6685] Convert Maven Model Builder to JSR 330

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (259232d)
            \
             N -- N -- N   refs/heads/MNG-6685 (cd6ac9f)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../apache/maven/profiles/manager/DefaultProfileManagerTest.java  | 8 ++++++++
 1 file changed, 8 insertions(+)


[maven] 01/01: [MNG-6685] Convert Maven Model Builder to JSR 330

Posted by mi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch MNG-6685
in repository https://gitbox.apache.org/repos/asf/maven.git

commit cd6ac9f8b28f294822d8ddc56025b1fbec7752fd
Author: Joseph Walton <jo...@kafsemo.org>
AuthorDate: Mon Jun 17 22:13:19 2019 +1000

    [MNG-6685] Convert Maven Model Builder to JSR 330
    
    This closes #256
---
 .../manager/DefaultProfileManagerTest.java         | 10 +++--
 .../artifact/DefaultMavenMetadataCacheTest.java    |  8 ++--
 .../project/artifact/MavenMetadataSourceTest.java  |  2 +
 .../maven/cli/CLIManagerDocumentationTest.java     |  7 ++--
 maven-model-builder/pom.xml                        |  8 +++-
 .../maven/model/building/DefaultModelBuilder.java  | 45 ++++++++++++----------
 .../model/building/DefaultModelProcessor.java      | 15 +++++---
 .../DefaultDependencyManagementImporter.java       |  7 +++-
 .../inheritance/DefaultInheritanceAssembler.java   |  7 +++-
 .../AbstractStringBasedModelInterpolator.java      |  7 ++--
 .../StringSearchModelInterpolator.java             |  7 +++-
 .../apache/maven/model/io/DefaultModelReader.java  |  7 +++-
 .../apache/maven/model/io/DefaultModelWriter.java  |  7 +++-
 .../maven/model/locator/DefaultModelLocator.java   |  6 ++-
 .../DefaultDependencyManagementInjector.java       |  7 +++-
 .../DefaultPluginManagementInjector.java           |  7 +++-
 .../normalization/DefaultModelNormalizer.java      |  7 +++-
 .../model/path/DefaultModelPathTranslator.java     | 11 ++++--
 .../model/path/DefaultModelUrlNormalizer.java      | 11 ++++--
 .../maven/model/path/DefaultPathTranslator.java    |  6 ++-
 .../maven/model/path/DefaultUrlNormalizer.java     |  6 ++-
 .../plugin/DefaultPluginConfigurationExpander.java |  7 +++-
 .../plugin/DefaultReportConfigurationExpander.java |  7 +++-
 .../model/plugin/DefaultReportingConverter.java    |  7 +++-
 .../model/profile/DefaultProfileInjector.java      |  7 +++-
 .../model/profile/DefaultProfileSelector.java      | 11 ++++--
 .../profile/activation/FileProfileActivator.java   | 11 ++++--
 .../activation/JdkVersionProfileActivator.java     |  7 +++-
 .../OperatingSystemProfileActivator.java           |  7 +++-
 .../activation/PropertyProfileActivator.java       |  7 +++-
 .../model/superpom/DefaultSuperPomProvider.java    | 11 ++++--
 .../model/validation/DefaultModelValidator.java    |  7 +++-
 .../DefaultInheritanceAssemblerTest.java           | 19 +++++----
 .../AbstractModelInterpolatorTest.java             |  5 ++-
 .../StringSearchModelInterpolatorTest.java         |  2 +-
 .../activation/AbstractProfileActivatorTest.java   | 12 ++----
 .../validation/DefaultModelValidatorTest.java      |  7 ++--
 37 files changed, 213 insertions(+), 119 deletions(-)

diff --git a/maven-compat/src/test/java/org/apache/maven/profiles/manager/DefaultProfileManagerTest.java b/maven-compat/src/test/java/org/apache/maven/profiles/manager/DefaultProfileManagerTest.java
index 8e3b86a..7431808 100644
--- a/maven-compat/src/test/java/org/apache/maven/profiles/manager/DefaultProfileManagerTest.java
+++ b/maven-compat/src/test/java/org/apache/maven/profiles/manager/DefaultProfileManagerTest.java
@@ -27,16 +27,20 @@ import org.apache.maven.model.ActivationProperty;
 import org.apache.maven.model.Profile;
 import org.apache.maven.profiles.DefaultProfileManager;
 import org.apache.maven.profiles.ProfileManager;
+import org.codehaus.plexus.ContainerConfiguration;
+import org.codehaus.plexus.PlexusConstants;
 import org.codehaus.plexus.PlexusTestCase;
 
 public class DefaultProfileManagerTest
     extends PlexusTestCase
 {
 
-    public void setUp()
-        throws Exception
+    @Override
+    protected void customizeContainerConfiguration( ContainerConfiguration configuration )
     {
-        super.setUp();
+        super.customizeContainerConfiguration( configuration );
+        configuration.setAutoWiring( true );
+        configuration.setClassPathScanning( PlexusConstants.SCANNING_ON );
     }
 
     public void testShouldActivateDefaultProfile()
diff --git a/maven-core/src/test/java/org/apache/maven/project/artifact/DefaultMavenMetadataCacheTest.java b/maven-core/src/test/java/org/apache/maven/project/artifact/DefaultMavenMetadataCacheTest.java
index 6b103b2..c50cd70 100644
--- a/maven-core/src/test/java/org/apache/maven/project/artifact/DefaultMavenMetadataCacheTest.java
+++ b/maven-core/src/test/java/org/apache/maven/project/artifact/DefaultMavenMetadataCacheTest.java
@@ -28,13 +28,15 @@ import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter;
 import org.apache.maven.project.artifact.DefaultMavenMetadataCache.CacheKey;
 import org.apache.maven.repository.DelegatingLocalArtifactRepository;
 import org.apache.maven.repository.RepositorySystem;
-import org.codehaus.plexus.PlexusTestCase;
+import org.apache.maven.repository.TestRepositorySystem;
+
+import junit.framework.TestCase;
 
 /**
  * @author Igor Fedorenko
  */
 public class DefaultMavenMetadataCacheTest
-    extends PlexusTestCase
+    extends TestCase
 {
     private RepositorySystem repositorySystem;
 
@@ -42,7 +44,7 @@ public class DefaultMavenMetadataCacheTest
         throws Exception
     {
         super.setUp();
-        repositorySystem = lookup( RepositorySystem.class );
+        repositorySystem = new TestRepositorySystem();
     }
 
     @Override
diff --git a/maven-core/src/test/java/org/apache/maven/project/artifact/MavenMetadataSourceTest.java b/maven-core/src/test/java/org/apache/maven/project/artifact/MavenMetadataSourceTest.java
index 5486e96..05d7d3e 100644
--- a/maven-core/src/test/java/org/apache/maven/project/artifact/MavenMetadataSourceTest.java
+++ b/maven-core/src/test/java/org/apache/maven/project/artifact/MavenMetadataSourceTest.java
@@ -21,7 +21,9 @@ package org.apache.maven.project.artifact;
 
 import org.apache.maven.repository.RepositorySystem;
 import org.codehaus.plexus.PlexusTestCase;
+import org.junit.Ignore;
 
+@Ignore
 public class MavenMetadataSourceTest
     extends PlexusTestCase
 {
diff --git a/maven-embedder/src/test/java/org/apache/maven/cli/CLIManagerDocumentationTest.java b/maven-embedder/src/test/java/org/apache/maven/cli/CLIManagerDocumentationTest.java
index f58d75b..3a78f33 100644
--- a/maven-embedder/src/test/java/org/apache/maven/cli/CLIManagerDocumentationTest.java
+++ b/maven-embedder/src/test/java/org/apache/maven/cli/CLIManagerDocumentationTest.java
@@ -28,15 +28,16 @@ import java.util.Comparator;
 import java.util.List;
 
 import org.apache.commons.cli.Option;
-import org.codehaus.plexus.PlexusTestCase;
 import org.codehaus.plexus.util.FileUtils;
 
+import junit.framework.TestCase;
+
 /**
  * Pseudo test to generate documentation fragment about supported CLI options. TODO such documentation generation code
  * should not be necessary as unit test but should be run during site generation (Velocity? Doxia macro?)
  */
 public class CLIManagerDocumentationTest
-    extends PlexusTestCase
+    extends TestCase
 {
     private final static String LS = System.getProperty( "line.separator" );
 
@@ -100,7 +101,7 @@ public class CLIManagerDocumentationTest
     public void testOptionsAsHtml()
         throws IOException
     {
-        File options = getTestFile( "target/test-classes/options.html" );
+        File options = new File( "target/test-classes/options.html" );
         FileUtils.fileWrite( options, "UTF-8", getOptionsAsHtml() );
     }
 
diff --git a/maven-model-builder/pom.xml b/maven-model-builder/pom.xml
index 29a5667..9a85016 100644
--- a/maven-model-builder/pom.xml
+++ b/maven-model-builder/pom.xml
@@ -43,8 +43,8 @@ under the License.
       <artifactId>plexus-interpolation</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.codehaus.plexus</groupId>
-      <artifactId>plexus-component-annotations</artifactId>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
@@ -60,6 +60,10 @@ under the License.
     </dependency>
     <dependency>
       <groupId>org.eclipse.sisu</groupId>
+      <artifactId>org.eclipse.sisu.inject</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.sisu</groupId>
       <artifactId>org.eclipse.sisu.plexus</artifactId>
       <scope>test</scope>
     </dependency>
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
index 8714611..d127f56 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
@@ -59,10 +59,9 @@ import org.apache.maven.model.resolution.UnresolvableModelException;
 import org.apache.maven.model.resolution.WorkspaceModelResolver;
 import org.apache.maven.model.superpom.SuperPomProvider;
 import org.apache.maven.model.validation.ModelValidator;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.interpolation.MapBasedValueSource;
 import org.codehaus.plexus.interpolation.StringSearchInterpolator;
+import org.eclipse.sisu.Nullable;
 
 import java.io.File;
 import java.io.IOException;
@@ -76,65 +75,71 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.Properties;
 
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import static org.apache.maven.model.building.Result.error;
 import static org.apache.maven.model.building.Result.newResult;
 
 /**
  * @author Benjamin Bentmann
  */
-@Component( role = ModelBuilder.class )
+@Named
+@Singleton
 public class DefaultModelBuilder
     implements ModelBuilder
 {
-    @Requirement
+    @Inject
     private ModelProcessor modelProcessor;
 
-    @Requirement
+    @Inject
     private ModelValidator modelValidator;
 
-    @Requirement
+    @Inject
     private ModelNormalizer modelNormalizer;
 
-    @Requirement
+    @Inject
     private ModelInterpolator modelInterpolator;
 
-    @Requirement
+    @Inject
     private ModelPathTranslator modelPathTranslator;
 
-    @Requirement
+    @Inject
     private ModelUrlNormalizer modelUrlNormalizer;
 
-    @Requirement
+    @Inject
     private SuperPomProvider superPomProvider;
 
-    @Requirement
+    @Inject
     private InheritanceAssembler inheritanceAssembler;
 
-    @Requirement
+    @Inject
     private ProfileSelector profileSelector;
 
-    @Requirement
+    @Inject
     private ProfileInjector profileInjector;
 
-    @Requirement
+    @Inject
     private PluginManagementInjector pluginManagementInjector;
 
-    @Requirement
+    @Inject
     private DependencyManagementInjector dependencyManagementInjector;
 
-    @Requirement
+    @Inject
     private DependencyManagementImporter dependencyManagementImporter;
 
-    @Requirement( optional = true )
+    @Inject
+    @Nullable
     private LifecycleBindingsInjector lifecycleBindingsInjector;
 
-    @Requirement
+    @Inject
     private PluginConfigurationExpander pluginConfigurationExpander;
 
-    @Requirement
+    @Inject
     private ReportConfigurationExpander reportConfigurationExpander;
 
-    @Requirement
+    @Inject
     private ReportingConverter reportingConverter;
 
     public DefaultModelBuilder setModelProcessor( ModelProcessor modelProcessor )
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProcessor.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProcessor.java
index 6f4f084..a275022 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProcessor.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProcessor.java
@@ -25,24 +25,29 @@ import java.io.InputStream;
 import java.io.Reader;
 import java.util.Map;
 
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import org.apache.maven.model.Model;
 import org.apache.maven.model.io.ModelReader;
 import org.apache.maven.model.locator.ModelLocator;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
+import org.eclipse.sisu.Typed;
 
 /**
  * DefaultModelProcessor
  */
-@Component( role = ModelProcessor.class )
+@Named
+@Singleton
+@Typed( ModelProcessor.class )
 public class DefaultModelProcessor
     implements ModelProcessor
 {
 
-    @Requirement
+    @Inject
     private ModelLocator locator;
 
-    @Requirement
+    @Inject
     private ModelReader reader;
 
     public DefaultModelProcessor setModelLocator( ModelLocator locator )
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/composition/DefaultDependencyManagementImporter.java b/maven-model-builder/src/main/java/org/apache/maven/model/composition/DefaultDependencyManagementImporter.java
index cce7d7f..b277bf3 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/composition/DefaultDependencyManagementImporter.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/composition/DefaultDependencyManagementImporter.java
@@ -24,19 +24,22 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.DependencyManagement;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.building.ModelBuildingRequest;
 import org.apache.maven.model.building.ModelProblemCollector;
-import org.codehaus.plexus.component.annotations.Component;
 
 /**
  * Handles the import of dependency management from other models into the target model.
  *
  * @author Benjamin Bentmann
  */
-@Component( role = DependencyManagementImporter.class )
+@Named
+@Singleton
 public class DefaultDependencyManagementImporter
     implements DependencyManagementImporter
 {
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/inheritance/DefaultInheritanceAssembler.java b/maven-model-builder/src/main/java/org/apache/maven/model/inheritance/DefaultInheritanceAssembler.java
index 7622f84..11219c3 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/inheritance/DefaultInheritanceAssembler.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/inheritance/DefaultInheritanceAssembler.java
@@ -26,6 +26,9 @@ import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import org.apache.maven.model.InputLocation;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.ModelBase;
@@ -36,7 +39,6 @@ import org.apache.maven.model.Reporting;
 import org.apache.maven.model.building.ModelBuildingRequest;
 import org.apache.maven.model.building.ModelProblemCollector;
 import org.apache.maven.model.merge.MavenModelMerger;
-import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.StringUtils;
 
 /**
@@ -45,7 +47,8 @@ import org.codehaus.plexus.util.StringUtils;
  * @author Benjamin Bentmann
  */
 @SuppressWarnings( { "checkstyle:methodname" } )
-@Component( role = InheritanceAssembler.class )
+@Named
+@Singleton
 public class DefaultInheritanceAssembler
     implements InheritanceAssembler
 {
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/AbstractStringBasedModelInterpolator.java b/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/AbstractStringBasedModelInterpolator.java
index 0322f89..69d7e80 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/AbstractStringBasedModelInterpolator.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/AbstractStringBasedModelInterpolator.java
@@ -27,6 +27,8 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Properties;
 
+import javax.inject.Inject;
+
 import org.apache.maven.model.Model;
 import org.apache.maven.model.building.ModelBuildingRequest;
 import org.apache.maven.model.building.ModelProblem.Severity;
@@ -35,7 +37,6 @@ import org.apache.maven.model.building.ModelProblemCollector;
 import org.apache.maven.model.building.ModelProblemCollectorRequest;
 import org.apache.maven.model.path.PathTranslator;
 import org.apache.maven.model.path.UrlNormalizer;
-import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.interpolation.AbstractValueSource;
 import org.codehaus.plexus.interpolation.InterpolationException;
 import org.codehaus.plexus.interpolation.InterpolationPostProcessor;
@@ -86,10 +87,10 @@ public abstract class AbstractStringBasedModelInterpolator
         TRANSLATED_PATH_EXPRESSIONS = translatedPrefixes;
     }
 
-    @Requirement
+    @Inject
     private PathTranslator pathTranslator;
 
-    @Requirement
+    @Inject
     private UrlNormalizer urlNormalizer;
 
     private Interpolator interpolator;
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/StringSearchModelInterpolator.java b/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/StringSearchModelInterpolator.java
index afd3b0a..0fb953d 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/StringSearchModelInterpolator.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/StringSearchModelInterpolator.java
@@ -26,7 +26,6 @@ import org.apache.maven.model.building.ModelProblem.Severity;
 import org.apache.maven.model.building.ModelProblem.Version;
 import org.apache.maven.model.building.ModelProblemCollector;
 import org.apache.maven.model.building.ModelProblemCollectorRequest;
-import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.interpolation.InterpolationPostProcessor;
 import org.codehaus.plexus.interpolation.Interpolator;
 import org.codehaus.plexus.interpolation.StringSearchInterpolator;
@@ -45,10 +44,14 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 /**
  * StringSearchModelInterpolator
  */
-@Component( role = ModelInterpolator.class )
+@Named
+@Singleton
 public class StringSearchModelInterpolator
     extends AbstractStringBasedModelInterpolator
 {
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/io/DefaultModelReader.java b/maven-model-builder/src/main/java/org/apache/maven/model/io/DefaultModelReader.java
index cc1e2fc..b0778d8 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/io/DefaultModelReader.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/io/DefaultModelReader.java
@@ -27,11 +27,13 @@ import java.io.Reader;
 import java.util.Map;
 import java.util.Objects;
 
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import org.apache.maven.model.InputSource;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
 import org.apache.maven.model.io.xpp3.MavenXpp3ReaderEx;
-import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.ReaderFactory;
 import org.codehaus.plexus.util.xml.XmlStreamReader;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
@@ -41,7 +43,8 @@ import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
  *
  * @author Benjamin Bentmann
  */
-@Component( role = ModelReader.class )
+@Named
+@Singleton
 public class DefaultModelReader
     implements ModelReader
 {
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/io/DefaultModelWriter.java b/maven-model-builder/src/main/java/org/apache/maven/model/io/DefaultModelWriter.java
index d0da9a3..650ae95 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/io/DefaultModelWriter.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/io/DefaultModelWriter.java
@@ -27,9 +27,11 @@ import java.io.Writer;
 import java.util.Map;
 import java.util.Objects;
 
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import org.apache.maven.model.Model;
 import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
-import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.WriterFactory;
 
 /**
@@ -37,7 +39,8 @@ import org.codehaus.plexus.util.WriterFactory;
  *
  * @author Benjamin Bentmann
  */
-@Component( role = ModelWriter.class )
+@Named
+@Singleton
 public class DefaultModelWriter
     implements ModelWriter
 {
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/locator/DefaultModelLocator.java b/maven-model-builder/src/main/java/org/apache/maven/model/locator/DefaultModelLocator.java
index 299da65..fd29dc6 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/locator/DefaultModelLocator.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/locator/DefaultModelLocator.java
@@ -21,14 +21,16 @@ package org.apache.maven.model.locator;
 
 import java.io.File;
 
-import org.codehaus.plexus.component.annotations.Component;
+import javax.inject.Named;
+import javax.inject.Singleton;
 
 /**
  * Locates a POM file within a project base directory.
  *
  * @author Benjamin Bentmann
  */
-@Component( role = ModelLocator.class )
+@Named
+@Singleton
 public class DefaultModelLocator
     implements ModelLocator
 {
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultDependencyManagementInjector.java b/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultDependencyManagementInjector.java
index 4547407..f9ae3af 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultDependencyManagementInjector.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultDependencyManagementInjector.java
@@ -24,6 +24,9 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.DependencyManagement;
 import org.apache.maven.model.Exclusion;
@@ -31,7 +34,6 @@ import org.apache.maven.model.Model;
 import org.apache.maven.model.building.ModelBuildingRequest;
 import org.apache.maven.model.building.ModelProblemCollector;
 import org.apache.maven.model.merge.MavenModelMerger;
-import org.codehaus.plexus.component.annotations.Component;
 
 /**
  * Handles injection of dependency management into the model.
@@ -39,7 +41,8 @@ import org.codehaus.plexus.component.annotations.Component;
  * @author Benjamin Bentmann
  */
 @SuppressWarnings( { "checkstyle:methodname" } )
-@Component( role = DependencyManagementInjector.class )
+@Named
+@Singleton
 public class DefaultDependencyManagementInjector
     implements DependencyManagementInjector
 {
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultPluginManagementInjector.java b/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultPluginManagementInjector.java
index 9d4dc19..b0db72e 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultPluginManagementInjector.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultPluginManagementInjector.java
@@ -25,6 +25,9 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import org.apache.maven.model.Build;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Plugin;
@@ -34,7 +37,6 @@ import org.apache.maven.model.PluginManagement;
 import org.apache.maven.model.building.ModelBuildingRequest;
 import org.apache.maven.model.building.ModelProblemCollector;
 import org.apache.maven.model.merge.MavenModelMerger;
-import org.codehaus.plexus.component.annotations.Component;
 
 /**
  * Handles injection of plugin management into the model.
@@ -42,7 +44,8 @@ import org.codehaus.plexus.component.annotations.Component;
  * @author Benjamin Bentmann
  */
 @SuppressWarnings( { "checkstyle:methodname" } )
-@Component( role = PluginManagementInjector.class )
+@Named
+@Singleton
 public class DefaultPluginManagementInjector
     implements PluginManagementInjector
 {
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java b/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java
index d625bb5..9f86c09 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java
@@ -25,6 +25,9 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import org.apache.maven.model.Build;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.Model;
@@ -32,7 +35,6 @@ import org.apache.maven.model.Plugin;
 import org.apache.maven.model.building.ModelBuildingRequest;
 import org.apache.maven.model.building.ModelProblemCollector;
 import org.apache.maven.model.merge.MavenModelMerger;
-import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.StringUtils;
 
 /**
@@ -40,7 +42,8 @@ import org.codehaus.plexus.util.StringUtils;
  *
  * @author Benjamin Bentmann
  */
-@Component( role = ModelNormalizer.class )
+@Named
+@Singleton
 public class DefaultModelNormalizer
     implements ModelNormalizer
 {
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/path/DefaultModelPathTranslator.java b/maven-model-builder/src/main/java/org/apache/maven/model/path/DefaultModelPathTranslator.java
index e4f319c..26fe10c 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/path/DefaultModelPathTranslator.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/path/DefaultModelPathTranslator.java
@@ -23,25 +23,28 @@ import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
 
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import org.apache.maven.model.Build;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Reporting;
 import org.apache.maven.model.Resource;
 import org.apache.maven.model.building.ModelBuildingRequest;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
 
 /**
  * Resolves relative paths within a model against a specific base directory.
  *
  * @author Benjamin Bentmann
  */
-@Component( role = ModelPathTranslator.class )
+@Named
+@Singleton
 public class DefaultModelPathTranslator
     implements ModelPathTranslator
 {
 
-    @Requirement
+    @Inject
     private PathTranslator pathTranslator;
 
     public DefaultModelPathTranslator setPathTranslator( PathTranslator pathTranslator )
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/path/DefaultModelUrlNormalizer.java b/maven-model-builder/src/main/java/org/apache/maven/model/path/DefaultModelUrlNormalizer.java
index 2093f8f..22ace6f 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/path/DefaultModelUrlNormalizer.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/path/DefaultModelUrlNormalizer.java
@@ -19,13 +19,15 @@ package org.apache.maven.model.path;
  * under the License.
  */
 
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import org.apache.maven.model.DistributionManagement;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Scm;
 import org.apache.maven.model.Site;
 import org.apache.maven.model.building.ModelBuildingRequest;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
 
 /**
  * Normalizes URLs to remove the ugly parent references "../" that got potentially inserted by URL adjustment during
@@ -33,12 +35,13 @@ import org.codehaus.plexus.component.annotations.Requirement;
  *
  * @author Benjamin Bentmann
  */
-@Component( role = ModelUrlNormalizer.class )
+@Named
+@Singleton
 public class DefaultModelUrlNormalizer
     implements ModelUrlNormalizer
 {
 
-    @Requirement
+    @Inject
     private UrlNormalizer urlNormalizer;
 
     public DefaultModelUrlNormalizer setUrlNormalizer( UrlNormalizer urlNormalizer )
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/path/DefaultPathTranslator.java b/maven-model-builder/src/main/java/org/apache/maven/model/path/DefaultPathTranslator.java
index 1ad9d03..f15da53 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/path/DefaultPathTranslator.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/path/DefaultPathTranslator.java
@@ -21,14 +21,16 @@ package org.apache.maven.model.path;
 
 import java.io.File;
 
-import org.codehaus.plexus.component.annotations.Component;
+import javax.inject.Named;
+import javax.inject.Singleton;
 
 /**
  * Resolves relative paths against a specific base directory.
  *
  * @author Benjamin Bentmann
  */
-@Component( role = PathTranslator.class )
+@Named
+@Singleton
 public class DefaultPathTranslator
     implements PathTranslator
 {
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/path/DefaultUrlNormalizer.java b/maven-model-builder/src/main/java/org/apache/maven/model/path/DefaultUrlNormalizer.java
index 120b02f..9b9216d 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/path/DefaultUrlNormalizer.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/path/DefaultUrlNormalizer.java
@@ -19,14 +19,16 @@ package org.apache.maven.model.path;
  * under the License.
  */
 
-import org.codehaus.plexus.component.annotations.Component;
+import javax.inject.Named;
+import javax.inject.Singleton;
 
 /**
  * Normalizes a URL.
  *
  * @author Benjamin Bentmann
  */
-@Component( role = UrlNormalizer.class )
+@Named
+@Singleton
 public class DefaultUrlNormalizer
     implements UrlNormalizer
 {
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultPluginConfigurationExpander.java b/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultPluginConfigurationExpander.java
index dc7cf13..012a685 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultPluginConfigurationExpander.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultPluginConfigurationExpander.java
@@ -21,6 +21,9 @@ package org.apache.maven.model.plugin;
 
 import java.util.List;
 
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import org.apache.maven.model.Build;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Plugin;
@@ -28,7 +31,6 @@ import org.apache.maven.model.PluginExecution;
 import org.apache.maven.model.PluginManagement;
 import org.apache.maven.model.building.ModelBuildingRequest;
 import org.apache.maven.model.building.ModelProblemCollector;
-import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
 
 /**
@@ -36,7 +38,8 @@ import org.codehaus.plexus.util.xml.Xpp3Dom;
  *
  * @author Benjamin Bentmann
  */
-@Component( role = PluginConfigurationExpander.class )
+@Named
+@Singleton
 public class DefaultPluginConfigurationExpander
     implements PluginConfigurationExpander
 {
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportConfigurationExpander.java b/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportConfigurationExpander.java
index 9c84299..b221ac2 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportConfigurationExpander.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportConfigurationExpander.java
@@ -19,13 +19,15 @@ package org.apache.maven.model.plugin;
  * under the License.
  */
 
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import org.apache.maven.model.Model;
 import org.apache.maven.model.ReportPlugin;
 import org.apache.maven.model.ReportSet;
 import org.apache.maven.model.Reporting;
 import org.apache.maven.model.building.ModelBuildingRequest;
 import org.apache.maven.model.building.ModelProblemCollector;
-import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
 
 /**
@@ -33,7 +35,8 @@ import org.codehaus.plexus.util.xml.Xpp3Dom;
  *
  * @author Benjamin Bentmann
  */
-@Component( role = ReportConfigurationExpander.class )
+@Named
+@Singleton
 public class DefaultReportConfigurationExpander
     implements ReportConfigurationExpander
 {
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java b/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java
index a3c17ad..04b414b 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java
@@ -19,6 +19,9 @@ package org.apache.maven.model.plugin;
  * under the License.
  */
 
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import org.apache.maven.model.Build;
 import org.apache.maven.model.InputLocation;
 import org.apache.maven.model.InputSource;
@@ -33,7 +36,6 @@ import org.apache.maven.model.building.ModelProblemCollector;
 import org.apache.maven.model.building.ModelProblemCollectorRequest;
 import org.apache.maven.model.building.ModelProblem.Severity;
 import org.apache.maven.model.building.ModelProblem.Version;
-import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
 
@@ -43,7 +45,8 @@ import org.codehaus.plexus.util.xml.Xpp3Dom;
  *
  * @author Benjamin Bentmann
  */
-@Component( role = ReportingConverter.class )
+@Named
+@Singleton
 public class DefaultReportingConverter
     implements ReportingConverter
 {
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileInjector.java b/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileInjector.java
index 32a2fc0..d7f4473 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileInjector.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileInjector.java
@@ -25,6 +25,9 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import org.apache.maven.model.Build;
 import org.apache.maven.model.BuildBase;
 import org.apache.maven.model.Model;
@@ -39,14 +42,14 @@ import org.apache.maven.model.Reporting;
 import org.apache.maven.model.building.ModelBuildingRequest;
 import org.apache.maven.model.building.ModelProblemCollector;
 import org.apache.maven.model.merge.MavenModelMerger;
-import org.codehaus.plexus.component.annotations.Component;
 
 /**
  * Handles profile injection into the model.
  *
  * @author Benjamin Bentmann
  */
-@Component( role = ProfileInjector.class )
+@Named
+@Singleton
 @SuppressWarnings( { "checkstyle:methodname" } )
 public class DefaultProfileInjector
     implements ProfileInjector
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileSelector.java b/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileSelector.java
index 457ab2a..178789f 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileSelector.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileSelector.java
@@ -24,6 +24,10 @@ import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
 
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import org.apache.maven.model.Activation;
 import org.apache.maven.model.Profile;
 import org.apache.maven.model.building.ModelProblemCollector;
@@ -31,20 +35,19 @@ import org.apache.maven.model.building.ModelProblem.Severity;
 import org.apache.maven.model.building.ModelProblem.Version;
 import org.apache.maven.model.building.ModelProblemCollectorRequest;
 import org.apache.maven.model.profile.activation.ProfileActivator;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
 
 /**
  * Calculates the active profiles among a given collection of profiles.
  *
  * @author Benjamin Bentmann
  */
-@Component( role = ProfileSelector.class )
+@Named
+@Singleton
 public class DefaultProfileSelector
     implements ProfileSelector
 {
 
-    @Requirement( role = ProfileActivator.class )
+    @Inject
     private List<ProfileActivator> activators = new ArrayList<>();
 
     public DefaultProfileSelector addProfileActivator( ProfileActivator profileActivator )
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/FileProfileActivator.java b/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/FileProfileActivator.java
index a7da86c..abfa57e 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/FileProfileActivator.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/FileProfileActivator.java
@@ -21,6 +21,10 @@ package org.apache.maven.model.profile.activation;
 
 import java.io.File;
 
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import org.apache.maven.model.Activation;
 import org.apache.maven.model.ActivationFile;
 import org.apache.maven.model.Profile;
@@ -30,8 +34,6 @@ import org.apache.maven.model.building.ModelProblem.Version;
 import org.apache.maven.model.building.ModelProblemCollectorRequest;
 import org.apache.maven.model.path.PathTranslator;
 import org.apache.maven.model.profile.ProfileActivationContext;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.interpolation.AbstractValueSource;
 import org.codehaus.plexus.interpolation.MapBasedValueSource;
 import org.codehaus.plexus.interpolation.RegexBasedInterpolator;
@@ -49,12 +51,13 @@ import org.codehaus.plexus.util.StringUtils;
  * @see ActivationFile
  * @see org.apache.maven.model.validation.DefaultModelValidator#validateRawModel
  */
-@Component( role = ProfileActivator.class, hint = "file" )
+@Named( "file" )
+@Singleton
 public class FileProfileActivator
     implements ProfileActivator
 {
 
-    @Requirement
+    @Inject
     private PathTranslator pathTranslator;
 
     public FileProfileActivator setPathTranslator( PathTranslator pathTranslator )
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/JdkVersionProfileActivator.java b/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/JdkVersionProfileActivator.java
index 2f106e1..e9dcd77 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/JdkVersionProfileActivator.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/JdkVersionProfileActivator.java
@@ -23,6 +23,9 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import org.apache.maven.model.Activation;
 import org.apache.maven.model.Profile;
 import org.apache.maven.model.building.ModelProblemCollector;
@@ -30,7 +33,6 @@ import org.apache.maven.model.building.ModelProblem.Severity;
 import org.apache.maven.model.building.ModelProblem.Version;
 import org.apache.maven.model.building.ModelProblemCollectorRequest;
 import org.apache.maven.model.profile.ProfileActivationContext;
-import org.codehaus.plexus.component.annotations.Component;
 
 /**
  * Determines profile activation based on the version of the current Java runtime.
@@ -38,7 +40,8 @@ import org.codehaus.plexus.component.annotations.Component;
  * @author Benjamin Bentmann
  * @see Activation#getJdk()
  */
-@Component( role = ProfileActivator.class, hint = "jdk-version" )
+@Named( "jdk-version" )
+@Singleton
 public class JdkVersionProfileActivator
     implements ProfileActivator
 {
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/OperatingSystemProfileActivator.java b/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/OperatingSystemProfileActivator.java
index 30abb1f..e53141e 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/OperatingSystemProfileActivator.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/OperatingSystemProfileActivator.java
@@ -19,12 +19,14 @@ package org.apache.maven.model.profile.activation;
  * under the License.
  */
 
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import org.apache.maven.model.Activation;
 import org.apache.maven.model.ActivationOS;
 import org.apache.maven.model.Profile;
 import org.apache.maven.model.building.ModelProblemCollector;
 import org.apache.maven.model.profile.ProfileActivationContext;
-import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.Os;
 
 /**
@@ -33,7 +35,8 @@ import org.codehaus.plexus.util.Os;
  * @author Benjamin Bentmann
  * @see ActivationOS
  */
-@Component( role = ProfileActivator.class, hint = "os" )
+@Named( "os" )
+@Singleton
 public class OperatingSystemProfileActivator
     implements ProfileActivator
 {
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/PropertyProfileActivator.java b/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/PropertyProfileActivator.java
index ba7886f..671a096 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/PropertyProfileActivator.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/PropertyProfileActivator.java
@@ -19,6 +19,9 @@ package org.apache.maven.model.profile.activation;
  * under the License.
  */
 
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import org.apache.maven.model.Activation;
 import org.apache.maven.model.ActivationProperty;
 import org.apache.maven.model.Profile;
@@ -27,7 +30,6 @@ import org.apache.maven.model.building.ModelProblem.Severity;
 import org.apache.maven.model.building.ModelProblem.Version;
 import org.apache.maven.model.building.ModelProblemCollectorRequest;
 import org.apache.maven.model.profile.ProfileActivationContext;
-import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.StringUtils;
 
 /**
@@ -36,7 +38,8 @@ import org.codehaus.plexus.util.StringUtils;
  * @author Benjamin Bentmann
  * @see ActivationProperty
  */
-@Component( role = ProfileActivator.class, hint = "property" )
+@Named( "property" )
+@Singleton
 public class PropertyProfileActivator
     implements ProfileActivator
 {
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/superpom/DefaultSuperPomProvider.java b/maven-model-builder/src/main/java/org/apache/maven/model/superpom/DefaultSuperPomProvider.java
index 03554c7..930e63d 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/superpom/DefaultSuperPomProvider.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/superpom/DefaultSuperPomProvider.java
@@ -24,18 +24,21 @@ import java.io.InputStream;
 import java.util.HashMap;
 import java.util.Map;
 
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import org.apache.maven.model.InputSource;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.building.ModelProcessor;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
 
 /**
  * Provides the super POM that all models implicitly inherit from.
  *
  * @author Benjamin Bentmann
  */
-@Component( role = SuperPomProvider.class )
+@Named
+@Singleton
 public class DefaultSuperPomProvider
     implements SuperPomProvider
 {
@@ -45,7 +48,7 @@ public class DefaultSuperPomProvider
      */
     private Model superModel;
 
-    @Requirement
+    @Inject
     private ModelProcessor modelProcessor;
 
     public DefaultSuperPomProvider setModelProcessor( ModelProcessor modelProcessor )
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java b/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
index 722c8c2..551bd2a 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
@@ -45,7 +45,6 @@ import org.apache.maven.model.building.ModelProblem.Version;
 import org.apache.maven.model.building.ModelProblemCollector;
 import org.apache.maven.model.building.ModelProblemCollectorRequest;
 import org.apache.maven.model.interpolation.AbstractStringBasedModelInterpolator;
-import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.StringUtils;
 
 import java.io.File;
@@ -58,10 +57,14 @@ import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 /**
  * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
  */
-@Component( role = ModelValidator.class )
+@Named
+@Singleton
 public class DefaultModelValidator
     implements ModelValidator
 {
diff --git a/maven-model-builder/src/test/java/org/apache/maven/model/inheritance/DefaultInheritanceAssemblerTest.java b/maven-model-builder/src/test/java/org/apache/maven/model/inheritance/DefaultInheritanceAssemblerTest.java
index 07a121a..09f930c 100644
--- a/maven-model-builder/src/test/java/org/apache/maven/model/inheritance/DefaultInheritanceAssemblerTest.java
+++ b/maven-model-builder/src/test/java/org/apache/maven/model/inheritance/DefaultInheritanceAssemblerTest.java
@@ -21,12 +21,15 @@ package org.apache.maven.model.inheritance;
 
 import org.apache.maven.model.Model;
 import org.apache.maven.model.building.SimpleProblemCollector;
+import org.apache.maven.model.io.DefaultModelReader;
+import org.apache.maven.model.io.DefaultModelWriter;
 import org.apache.maven.model.io.ModelReader;
 import org.apache.maven.model.io.ModelWriter;
-import org.codehaus.plexus.PlexusTestCase;
 
 import org.xmlunit.matchers.CompareMatcher;
 
+import junit.framework.TestCase;
+
 import java.io.File;
 import java.io.IOException;
 
@@ -36,7 +39,7 @@ import static org.junit.Assert.assertThat;
  * @author Hervé Boutemy
  */
 public class DefaultInheritanceAssemblerTest
-    extends PlexusTestCase
+    extends TestCase
 {
     private ModelReader reader;
 
@@ -50,14 +53,14 @@ public class DefaultInheritanceAssemblerTest
     {
         super.setUp();
 
-        reader = lookup( ModelReader.class );
-        writer = lookup( ModelWriter.class );
-        assembler = lookup( InheritanceAssembler.class );
+        reader = new DefaultModelReader();
+        writer = new DefaultModelWriter();
+        assembler = new DefaultInheritanceAssembler();
     }
 
     private File getPom( String name )
     {
-        return getTestFile( "src/test/resources/poms/inheritance/" + name + ".xml" );
+        return new File( "src/test/resources/poms/inheritance/" + name + ".xml" );
     }
 
     private Model getModel( String name )
@@ -201,7 +204,7 @@ public class DefaultInheritanceAssemblerTest
         assembler.assembleModelInheritance( child, parent, null, problems );
 
         // write baseName + "-actual"
-        File actual = getTestFile( "target/test-classes/poms/inheritance/" + baseName
+        File actual = new File( "target/test-classes/poms/inheritance/" + baseName
             + ( fromRepo ? "-build" : "-repo" ) + "-actual.xml" );
         writer.write( actual, null, child );
 
@@ -222,7 +225,7 @@ public class DefaultInheritanceAssemblerTest
 
         assembler.assembleModelInheritance( child, parent, null, problems );
 
-        File actual = getTestFile( "target/test-classes/poms/inheritance/module-path-not-artifactId-actual.xml" );
+        File actual = new File( "target/test-classes/poms/inheritance/module-path-not-artifactId-actual.xml" );
 
         writer.write( actual, null, child );
 
diff --git a/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/AbstractModelInterpolatorTest.java b/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/AbstractModelInterpolatorTest.java
index aa09cb0..19a28c1 100644
--- a/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/AbstractModelInterpolatorTest.java
+++ b/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/AbstractModelInterpolatorTest.java
@@ -30,7 +30,8 @@ import org.apache.maven.model.building.DefaultModelBuildingRequest;
 import org.apache.maven.model.building.ModelBuildingRequest;
 import org.apache.maven.model.building.SimpleProblemCollector;
 import org.apache.maven.model.path.PathTranslator;
-import org.codehaus.plexus.PlexusTestCase;
+
+import junit.framework.TestCase;
 
 import java.io.File;
 import java.text.SimpleDateFormat;
@@ -45,7 +46,7 @@ import java.util.TimeZone;
  * @author jdcasey
  */
 public abstract class AbstractModelInterpolatorTest
-    extends PlexusTestCase
+    extends TestCase
 {
     private Properties context;
 
diff --git a/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java b/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java
index 9c3e7de..71ebf51 100644
--- a/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java
+++ b/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java
@@ -48,7 +48,7 @@ public class StringSearchModelInterpolatorTest
         throws Exception
     {
         super.setUp();
-        interpolator = lookup( ModelInterpolator.class );
+        interpolator = new StringSearchModelInterpolator();
     }
 
 
diff --git a/maven-model-builder/src/test/java/org/apache/maven/model/profile/activation/AbstractProfileActivatorTest.java b/maven-model-builder/src/test/java/org/apache/maven/model/profile/activation/AbstractProfileActivatorTest.java
index edc8373..5198d04 100644
--- a/maven-model-builder/src/test/java/org/apache/maven/model/profile/activation/AbstractProfileActivatorTest.java
+++ b/maven-model-builder/src/test/java/org/apache/maven/model/profile/activation/AbstractProfileActivatorTest.java
@@ -27,8 +27,8 @@ import org.apache.maven.model.Profile;
 import org.apache.maven.model.building.SimpleProblemCollector;
 import org.apache.maven.model.profile.DefaultProfileActivationContext;
 import org.apache.maven.model.profile.ProfileActivationContext;
-import org.codehaus.plexus.PlexusTestCase;
-import org.codehaus.plexus.component.annotations.Component;
+
+import junit.framework.TestCase;
 
 /**
  * Provides common services to test {@link ProfileActivator} implementations.
@@ -36,20 +36,16 @@ import org.codehaus.plexus.component.annotations.Component;
  * @author Benjamin Bentmann
  */
 public abstract class AbstractProfileActivatorTest<T extends ProfileActivator>
-    extends PlexusTestCase
+    extends TestCase
 {
 
     private Class<T> activatorClass;
 
-    private String roleHint;
-
     protected T activator;
 
     public AbstractProfileActivatorTest( Class<T> activatorClass )
     {
         this.activatorClass = Objects.requireNonNull( activatorClass, "activatorClass cannot be null" );;
-
-        roleHint = activatorClass.getAnnotation( Component.class ).hint();
     }
 
     @Override
@@ -58,7 +54,7 @@ public abstract class AbstractProfileActivatorTest<T extends ProfileActivator>
     {
         super.setUp();
 
-        activator = activatorClass.cast( lookup( ProfileActivator.class, roleHint ) );
+        activator = activatorClass.getConstructor().newInstance();
     }
 
     @Override
diff --git a/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java b/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
index 9d5f172..99ddd30 100644
--- a/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
+++ b/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
@@ -27,13 +27,14 @@ import org.apache.maven.model.building.DefaultModelBuildingRequest;
 import org.apache.maven.model.building.ModelBuildingRequest;
 import org.apache.maven.model.building.SimpleProblemCollector;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
-import org.codehaus.plexus.PlexusTestCase;
+
+import junit.framework.TestCase;
 
 /**
  * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
  */
 public class DefaultModelValidatorTest
-    extends PlexusTestCase
+    extends TestCase
 {
 
     private ModelValidator validator;
@@ -94,7 +95,7 @@ public class DefaultModelValidatorTest
     {
         super.setUp();
 
-        validator = lookup( ModelValidator.class );
+        validator = new DefaultModelValidator();
     }
 
     @Override