You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sl...@apache.org on 2019/07/12 16:43:16 UTC

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

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

slachiewicz pushed a commit to branch jenkins-buld-error-wip
in repository https://gitbox.apache.org/repos/asf/maven.git

commit bdc75de881e8675849a5def2afebc928dc745959
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