filtered = new HashMap<>();
+ // filter by visibility (plexus vs sisu diff; "realms" are plexus thing)
+ // in some tests container is not injected
+ if (this.plexusContainer != null) {
+ for (String name : this.lifecycleMappings.keySet()) {
+ try {
+ filtered.put(name, plexusContainer.lookup(LifecycleMapping.class, name));
+ } catch (ComponentLookupException e) {
+ // skip it
+ }
+ }
+ } else {
+ filtered.putAll(this.lifecycleMappings);
+ }
+
+ LifecycleMapping lifecycleMappingForPackaging = filtered.get(packaging);
if (lifecycleMappingForPackaging == null) {
return null;
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleTaskSegmentCalculator.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleTaskSegmentCalculator.java
index 3015b9dd4060..d654f0a450a4 100644
--- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleTaskSegmentCalculator.java
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleTaskSegmentCalculator.java
@@ -18,6 +18,10 @@
*/
package org.apache.maven.lifecycle.internal;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -34,8 +38,6 @@
import org.apache.maven.plugin.prefix.NoPluginFoundForPrefixException;
import org.apache.maven.plugin.version.PluginVersionResolutionException;
import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.util.StringUtils;
/**
@@ -50,12 +52,13 @@
* @author jdcasey
* @author Kristian Rosenvold (extracted class)
*/
-@Component(role = LifecycleTaskSegmentCalculator.class)
+@Singleton
+@Named
public class DefaultLifecycleTaskSegmentCalculator implements LifecycleTaskSegmentCalculator {
- @Requirement
+ @Inject
private MojoDescriptorCreator mojoDescriptorCreator;
- @Requirement
+ @Inject
private LifecyclePluginResolver lifecyclePluginResolver;
public DefaultLifecycleTaskSegmentCalculator() {}
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultMojoExecutionConfigurator.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultMojoExecutionConfigurator.java
index ca5937f70633..764a0c41233c 100644
--- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultMojoExecutionConfigurator.java
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultMojoExecutionConfigurator.java
@@ -18,6 +18,10 @@
*/
package org.apache.maven.lifecycle.internal;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.Collection;
import java.util.Collections;
import java.util.Optional;
@@ -35,8 +39,6 @@
import org.apache.maven.plugin.descriptor.Parameter;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.xml.Xpp3Dom;
import org.slf4j.Logger;
@@ -47,11 +49,12 @@
/**
* @since 3.3.1, MNG-5753
*/
-@Component(role = MojoExecutionConfigurator.class)
+@Singleton
+@Named
public class DefaultMojoExecutionConfigurator implements MojoExecutionConfigurator {
private final Logger logger = LoggerFactory.getLogger(getClass());
- @Requirement
+ @Inject
private MessageBuilderFactory messageBuilderFactory;
@Override
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleDebugLogger.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleDebugLogger.java
index df46e0f67860..4acd216e0af1 100644
--- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleDebugLogger.java
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleDebugLogger.java
@@ -18,6 +18,10 @@
*/
package org.apache.maven.lifecycle.internal;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -29,8 +33,6 @@
import org.apache.maven.plugin.MojoExecution;
import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.util.StringUtils;
@@ -45,9 +47,10 @@
* @author Jason van Zyl
* @author Kristian Rosenvold (extracted class only)
*/
-@Component(role = LifecycleDebugLogger.class)
+@Singleton
+@Named
public class LifecycleDebugLogger {
- @Requirement
+ @Inject
private Logger logger;
public LifecycleDebugLogger() {}
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleModuleBuilder.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleModuleBuilder.java
index 530eac0341aa..10effac673fd 100644
--- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleModuleBuilder.java
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleModuleBuilder.java
@@ -18,6 +18,10 @@
*/
package org.apache.maven.lifecycle.internal;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.HashSet;
import java.util.List;
@@ -31,8 +35,6 @@
import org.apache.maven.lifecycle.internal.builder.BuilderCommon;
import org.apache.maven.plugin.MojoExecution;
import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
/**
*
@@ -45,26 +47,25 @@
* @author Jason van Zyl
* @author Kristian Rosenvold (extracted class)
*/
-@Component(role = LifecycleModuleBuilder.class)
+@Singleton
+@Named
public class LifecycleModuleBuilder {
- @Requirement
+ @Inject
private MojoExecutor mojoExecutor;
- @Requirement
+ @Inject
private BuilderCommon builderCommon;
- @Requirement
+ @Inject
private ExecutionEventCatapult eventCatapult;
private ProjectExecutionListener projectExecutionListener;
- // this tricks plexus-component-metadata generate required metadata
- @Requirement
- private List projectExecutionListeners;
-
+ // TODO: this is hack here; old code was tricking plexus to call setter method; to preserve binary compat, not much
+ // can be done, but marking this
+ @Inject
public void setProjectExecutionListeners(final List listeners) {
- this.projectExecutionListeners = listeners;
this.projectExecutionListener = new CompoundProjectExecutionListener(listeners);
}
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecyclePluginResolver.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecyclePluginResolver.java
index 1a1b26bef2f8..d8bfa1e7a4e7 100644
--- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecyclePluginResolver.java
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecyclePluginResolver.java
@@ -18,6 +18,10 @@
*/
package org.apache.maven.lifecycle.internal;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.HashMap;
import java.util.Map;
@@ -29,8 +33,6 @@
import org.apache.maven.plugin.version.PluginVersionResolutionException;
import org.apache.maven.plugin.version.PluginVersionResolver;
import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
/**
* NOTE: This class is not part of any public api and can be changed or deleted without prior notice.
@@ -38,9 +40,10 @@
* @author Benjamin Bentmann
* @author Kristian Rosenvold (Extract class)
*/
-@Component(role = LifecyclePluginResolver.class)
+@Singleton
+@Named
public class LifecyclePluginResolver {
- @Requirement
+ @Inject
private PluginVersionResolver pluginVersionResolver;
public LifecyclePluginResolver(PluginVersionResolver pluginVersionResolver) {
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleStarter.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleStarter.java
index d7cc334e181c..18337ccdcbc9 100644
--- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleStarter.java
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleStarter.java
@@ -18,6 +18,10 @@
*/
package org.apache.maven.lifecycle.internal;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.List;
import java.util.Map;
@@ -30,9 +34,8 @@
import org.apache.maven.lifecycle.internal.builder.Builder;
import org.apache.maven.lifecycle.internal.builder.BuilderNotFoundException;
import org.apache.maven.session.scope.internal.SessionScope;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
-import org.codehaus.plexus.logging.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Starts the build life cycle
@@ -41,30 +44,30 @@
* @author Benjamin Bentmann
* @author Kristian Rosenvold
*/
-@Component(role = LifecycleStarter.class)
+@Singleton
+@Named
public class LifecycleStarter {
- @Requirement
+ private final Logger logger = LoggerFactory.getLogger(getClass());
+
+ @Inject
private ExecutionEventCatapult eventCatapult;
- @Requirement
+ @Inject
private DefaultLifecycles defaultLifeCycles;
- @Requirement
- private Logger logger;
-
- @Requirement
+ @Inject
private BuildListCalculator buildListCalculator;
- @Requirement
+ @Inject
private LifecycleDebugLogger lifecycleDebugLogger;
- @Requirement
+ @Inject
private LifecycleTaskSegmentCalculator lifecycleTaskSegmentCalculator;
- @Requirement
+ @Inject
private Map builders;
- @Requirement
+ @Inject
private SessionScope sessionScope;
public void execute(MavenSession session) {
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoDescriptorCreator.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoDescriptorCreator.java
index 582fa6453e4a..a769fa3ca73b 100644
--- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoDescriptorCreator.java
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoDescriptorCreator.java
@@ -18,6 +18,10 @@
*/
package org.apache.maven.lifecycle.internal;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.ArrayList;
import java.util.Collection;
import java.util.StringTokenizer;
@@ -41,11 +45,10 @@
import org.apache.maven.plugin.version.PluginVersionResolutionException;
import org.apache.maven.plugin.version.PluginVersionResolver;
import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.configuration.PlexusConfiguration;
-import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.util.xml.Xpp3Dom;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
*
@@ -59,22 +62,21 @@
* @author jdcasey
* @author Kristian Rosenvold (extracted class only)
*/
-@Component(role = MojoDescriptorCreator.class)
+@Singleton
+@Named
public class MojoDescriptorCreator {
+ private final Logger logger = LoggerFactory.getLogger(getClass());
- @Requirement
- private Logger logger;
-
- @Requirement
+ @Inject
private PluginVersionResolver pluginVersionResolver;
- @Requirement
+ @Inject
private BuildPluginManager pluginManager;
- @Requirement
+ @Inject
private PluginPrefixResolver pluginPrefixResolver;
- @Requirement
+ @Inject
private LifecyclePluginResolver lifecyclePluginResolver;
public MojoDescriptorCreator() {}
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoExecutor.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoExecutor.java
index 4061820ac652..15c6e117537f 100644
--- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoExecutor.java
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoExecutor.java
@@ -18,6 +18,10 @@
*/
package org.apache.maven.lifecycle.internal;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -53,8 +57,6 @@
import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.PlexusContainer;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
import org.codehaus.plexus.util.StringUtils;
import org.eclipse.aether.SessionData;
@@ -72,29 +74,30 @@
* @author Kristian Rosenvold
* @since 3.0
*/
-@Component(role = MojoExecutor.class)
+@Singleton
+@Named
public class MojoExecutor {
private static final Logger LOGGER = LoggerFactory.getLogger(MojoExecutor.class);
- @Requirement
+ @Inject
private BuildPluginManager pluginManager;
- @Requirement
+ @Inject
private MavenPluginManager mavenPluginManager;
- @Requirement
+ @Inject
private LifecycleDependencyResolver lifeCycleDependencyResolver;
- @Requirement
+ @Inject
private ExecutionEventCatapult eventCatapult;
- @Requirement
+ @Inject
private MessageBuilderFactory messageBuilderFactory;
private final OwnerReentrantReadWriteLock aggregatorLock = new OwnerReentrantReadWriteLock();
- @Requirement
+ @Inject
private PlexusContainer container;
private final Map mojos = new ConcurrentHashMap<>();
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/BuilderCommon.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/BuilderCommon.java
index dfb2cc049033..e4f84b432ba0 100644
--- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/BuilderCommon.java
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/BuilderCommon.java
@@ -18,6 +18,10 @@
*/
package org.apache.maven.lifecycle.internal.builder;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.Set;
import org.apache.maven.artifact.Artifact;
@@ -46,8 +50,6 @@
import org.apache.maven.plugin.version.PluginVersionResolutionException;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.classworlds.realm.ClassRealm;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.logging.Logger;
/**
@@ -58,18 +60,19 @@
* Builds one or more lifecycles for a full module
* NOTE: This class is not part of any public api and can be changed or deleted without prior notice.
*/
-@Component(role = BuilderCommon.class)
+@Singleton
+@Named
public class BuilderCommon {
- @Requirement
+ @Inject
private LifecycleDebugLogger lifecycleDebugLogger;
- @Requirement
+ @Inject
private LifecycleExecutionPlanCalculator lifeCycleExecutionPlanCalculator;
- @Requirement
+ @Inject
private ExecutionEventCatapult eventCatapult;
- @Requirement
+ @Inject
private Logger logger;
public BuilderCommon() {}
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/multithreaded/MultiThreadedBuilder.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/multithreaded/MultiThreadedBuilder.java
index ab7b344dd3f3..85ff2b74962c 100644
--- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/multithreaded/MultiThreadedBuilder.java
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/multithreaded/MultiThreadedBuilder.java
@@ -18,6 +18,10 @@
*/
package org.apache.maven.lifecycle.internal.builder.multithreaded;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@@ -40,9 +44,8 @@
import org.apache.maven.lifecycle.internal.TaskSegment;
import org.apache.maven.lifecycle.internal.builder.Builder;
import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
-import org.codehaus.plexus.logging.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Builds the full lifecycle in weave-mode (phase by phase as opposed to project-by-project).
@@ -58,13 +61,13 @@
* Builds one or more lifecycles for a full module
* NOTE: This class is not part of any public api and can be changed or deleted without prior notice.
*/
-@Component(role = Builder.class, hint = "multithreaded")
+@Singleton
+@Named("multithreaded")
public class MultiThreadedBuilder implements Builder {
- @Requirement
- private Logger logger;
+ private final Logger logger = LoggerFactory.getLogger(getClass());
- @Requirement
+ @Inject
private LifecycleModuleBuilder lifecycleModuleBuilder;
public MultiThreadedBuilder() {}
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/singlethreaded/SingleThreadedBuilder.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/singlethreaded/SingleThreadedBuilder.java
index aaf55824ae54..d5a859532344 100644
--- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/singlethreaded/SingleThreadedBuilder.java
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/singlethreaded/SingleThreadedBuilder.java
@@ -18,6 +18,10 @@
*/
package org.apache.maven.lifecycle.internal.builder.singlethreaded;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.List;
import org.apache.maven.execution.MavenSession;
@@ -28,17 +32,16 @@
import org.apache.maven.lifecycle.internal.ReactorContext;
import org.apache.maven.lifecycle.internal.TaskSegment;
import org.apache.maven.lifecycle.internal.builder.Builder;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
/**
*
* A {@link Builder} encapsulates a strategy for building a set of Maven projects. The default strategy in Maven builds
* the the projects serially, but a {@link Builder} can employ any type of concurrency model to build the projects.
*/
-@Component(role = Builder.class, hint = "singlethreaded")
+@Singleton
+@Named("singlethreaded")
public class SingleThreadedBuilder implements Builder {
- @Requirement
+ @Inject
private LifecycleModuleBuilder lifecycleModuleBuilder;
public void build(
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/providers/PluginVersions.java b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/PluginVersions.java
new file mode 100644
index 000000000000..5b8ca5b85ae0
--- /dev/null
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/PluginVersions.java
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.maven.lifecycle.providers;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UncheckedIOException;
+import java.util.Properties;
+
+import static java.util.Objects.requireNonNull;
+
+/**
+ * Provider of plugin versions.
+ *
+ * @since 3.10.0
+ */
+public final class PluginVersions {
+ private PluginVersions() {}
+
+ // basic
+ public static final String RESOURCES_PLUGIN_VERSION;
+ public static final String COMPILER_PLUGIN_VERSION;
+ public static final String SUREFIRE_PLUGIN_VERSION;
+ public static final String INSTALL_PLUGIN_VERSION;
+ public static final String DEPLOY_PLUGIN_VERSION;
+ // packaging
+ public static final String JAR_PLUGIN_VERSION;
+ public static final String EAR_PLUGIN_VERSION;
+ public static final String EJB_PLUGIN_VERSION;
+ public static final String PLUGIN_PLUGIN_VERSION;
+ public static final String RAR_PLUGIN_VERSION;
+ public static final String WAR_PLUGIN_VERSION;
+ // lifecycles
+ public static final String CLEAN_PLUGIN_VERSION;
+ public static final String SITE_PLUGIN_VERSION;
+
+ static {
+ Properties properties = new Properties();
+ try {
+ try (InputStream inputStream = PluginVersions.class
+ .getClassLoader()
+ .getResourceAsStream("org/apache/maven/lifecycle/providers/plugin-versions.properties")) {
+ if (inputStream != null) {
+ properties.load(inputStream);
+ }
+ }
+ RESOURCES_PLUGIN_VERSION = requireNonNull(properties.getProperty("maven-resources-plugin"));
+ COMPILER_PLUGIN_VERSION = requireNonNull(properties.getProperty("maven-compiler-plugin"));
+ SUREFIRE_PLUGIN_VERSION = requireNonNull(properties.getProperty("maven-surefire-plugin"));
+ INSTALL_PLUGIN_VERSION = requireNonNull(properties.getProperty("maven-install-plugin"));
+ DEPLOY_PLUGIN_VERSION = requireNonNull(properties.getProperty("maven-deploy-plugin"));
+ JAR_PLUGIN_VERSION = requireNonNull(properties.getProperty("maven-jar-plugin"));
+ EAR_PLUGIN_VERSION = requireNonNull(properties.getProperty("maven-ear-plugin"));
+ EJB_PLUGIN_VERSION = requireNonNull(properties.getProperty("maven-ejb-plugin"));
+ PLUGIN_PLUGIN_VERSION = requireNonNull(properties.getProperty("maven-plugin-plugin"));
+ RAR_PLUGIN_VERSION = requireNonNull(properties.getProperty("maven-rar-plugin"));
+ WAR_PLUGIN_VERSION = requireNonNull(properties.getProperty("maven-war-plugin"));
+ CLEAN_PLUGIN_VERSION = requireNonNull(properties.getProperty("maven-clean-plugin"));
+ SITE_PLUGIN_VERSION = requireNonNull(properties.getProperty("maven-site-plugin"));
+ } catch (IOException e) {
+ throw new UncheckedIOException("Failed to load plugin versions", e);
+ }
+ }
+}
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/providers/lifecycle/AbstractLifecycleProvider.java b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/lifecycle/AbstractLifecycleProvider.java
new file mode 100644
index 000000000000..b89ba8d46d0a
--- /dev/null
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/lifecycle/AbstractLifecycleProvider.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.maven.lifecycle.providers.lifecycle;
+
+import javax.inject.Provider;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+
+import org.apache.maven.lifecycle.Lifecycle;
+import org.apache.maven.lifecycle.mapping.LifecyclePhase;
+
+/**
+ * Base lifecycle provider.
+ *
+ * @since 3.10.0
+ */
+public abstract class AbstractLifecycleProvider implements Provider {
+ private final Lifecycle lifecycle;
+
+ protected AbstractLifecycleProvider(String id, String[] phases, String[] pluginBindings) {
+ HashMap defaultBindings = null;
+ if (pluginBindings != null) {
+ final int len = pluginBindings.length;
+ if (len % 2 != 0) {
+ throw new IllegalArgumentException("Plugin bindings must have even count of elements");
+ }
+ defaultBindings = new LinkedHashMap<>(len / 2);
+ for (int i = 0; i < len; i += 2) {
+ defaultBindings.put(pluginBindings[i], new LifecyclePhase(pluginBindings[i + 1]));
+ }
+ }
+
+ this.lifecycle = new Lifecycle(
+ id,
+ Collections.unmodifiableList(Arrays.asList(phases)),
+ defaultBindings == null ? null : Collections.unmodifiableMap(defaultBindings));
+ }
+
+ @Override
+ public Lifecycle get() {
+ return lifecycle;
+ }
+}
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/providers/lifecycle/CleanLifecycleProvider.java b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/lifecycle/CleanLifecycleProvider.java
new file mode 100644
index 000000000000..cf7dc32ba95e
--- /dev/null
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/lifecycle/CleanLifecycleProvider.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.maven.lifecycle.providers.lifecycle;
+
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+import org.apache.maven.lifecycle.providers.PluginVersions;
+
+/**
+ * Clean lifecycle provider.
+ *
+ * @since 3.10.0
+ */
+@Singleton
+@Named(CleanLifecycleProvider.NAME)
+public class CleanLifecycleProvider extends AbstractLifecycleProvider {
+ public static final String NAME = "clean";
+
+ private static final String[] PHASES = {"pre-clean", "clean", "post-clean"};
+
+ private static final String[] PLUGIN_BINDINGS = {
+ "clean", "org.apache.maven.plugins:maven-clean-plugin:" + PluginVersions.CLEAN_PLUGIN_VERSION + ":clean"
+ };
+
+ public CleanLifecycleProvider() {
+ super(NAME, PHASES, PLUGIN_BINDINGS);
+ }
+}
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/providers/lifecycle/DefaultLifecycleProvider.java b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/lifecycle/DefaultLifecycleProvider.java
new file mode 100644
index 000000000000..024c57d4d933
--- /dev/null
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/lifecycle/DefaultLifecycleProvider.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.maven.lifecycle.providers.lifecycle;
+
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+/**
+ * Default lifecycle provider.
+ *
+ * @since 3.10.0
+ */
+@Singleton
+@Named(DefaultLifecycleProvider.NAME)
+public class DefaultLifecycleProvider extends AbstractLifecycleProvider {
+ public static final String NAME = "default";
+
+ private static final String[] PHASES = {
+ "validate",
+ "initialize",
+ "generate-sources",
+ "process-sources",
+ "generate-resources",
+ "process-resources",
+ "compile",
+ "process-classes",
+ "generate-test-sources",
+ "process-test-sources",
+ "generate-test-resources",
+ "process-test-resources",
+ "test-compile",
+ "process-test-classes",
+ "test",
+ "prepare-package",
+ "package",
+ "pre-integration-test",
+ "integration-test",
+ "post-integration-test",
+ "verify",
+ "install",
+ "deploy"
+ };
+
+ private static final String[] PLUGIN_BINDINGS = {};
+
+ public DefaultLifecycleProvider() {
+ super(NAME, PHASES, PLUGIN_BINDINGS);
+ }
+}
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/providers/lifecycle/SiteLifecycleProvider.java b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/lifecycle/SiteLifecycleProvider.java
new file mode 100644
index 000000000000..53f2675145bb
--- /dev/null
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/lifecycle/SiteLifecycleProvider.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.maven.lifecycle.providers.lifecycle;
+
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+import org.apache.maven.lifecycle.providers.PluginVersions;
+
+/**
+ * Site lifecycle provider.
+ *
+ * @since 3.10.0
+ */
+@Singleton
+@Named(SiteLifecycleProvider.NAME)
+public class SiteLifecycleProvider extends AbstractLifecycleProvider {
+ public static final String NAME = "site";
+
+ private static final String[] PHASES = {"pre-site", "site", "post-site", "site-deploy"};
+
+ private static final String[] PLUGIN_BINDINGS = {
+ "site",
+ "org.apache.maven.plugins:maven-site-plugin:" + PluginVersions.SITE_PLUGIN_VERSION + ":site",
+ "site-deploy",
+ "org.apache.maven.plugins:maven-site-plugin:" + PluginVersions.SITE_PLUGIN_VERSION + ":deploy"
+ };
+
+ public SiteLifecycleProvider() {
+ super(NAME, PHASES, PLUGIN_BINDINGS);
+ }
+}
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/AbstractLifecycleMappingProvider.java b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/AbstractLifecycleMappingProvider.java
new file mode 100644
index 000000000000..2452d18bf03a
--- /dev/null
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/AbstractLifecycleMappingProvider.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.maven.lifecycle.providers.packaging;
+
+import javax.inject.Provider;
+
+import java.util.Collections;
+import java.util.HashMap;
+
+import org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping;
+import org.apache.maven.lifecycle.mapping.Lifecycle;
+import org.apache.maven.lifecycle.mapping.LifecycleMapping;
+import org.apache.maven.lifecycle.mapping.LifecyclePhase;
+
+import static java.util.Objects.requireNonNull;
+
+/**
+ * Base lifecycle mapping provider, ie per-packaging plugin bindings for {@code default} lifecycle.
+ *
+ * @since 3.10.0
+ */
+public abstract class AbstractLifecycleMappingProvider implements Provider {
+ private final LifecycleMapping lifecycleMapping;
+
+ protected AbstractLifecycleMappingProvider(String[] pluginBindings) {
+ requireNonNull(pluginBindings);
+ final int len = pluginBindings.length;
+ if (len < 2 || len % 2 != 0) {
+ throw new IllegalArgumentException("Plugin bindings must have more than 0, even count of elements");
+ }
+ HashMap lifecyclePhaseBindings = new HashMap<>(len / 2);
+ for (int i = 0; i < len; i = i + 2) {
+ lifecyclePhaseBindings.put(pluginBindings[i], new LifecyclePhase(pluginBindings[i + 1]));
+ }
+ Lifecycle lifecycle = new Lifecycle();
+ lifecycle.setId("default");
+ lifecycle.setLifecyclePhases(Collections.unmodifiableMap(lifecyclePhaseBindings));
+ this.lifecycleMapping = new DefaultLifecycleMapping(Collections.singletonList(lifecycle));
+ }
+
+ @Override
+ public LifecycleMapping get() {
+ return lifecycleMapping;
+ }
+}
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/EarLifecycleMappingProvider.java b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/EarLifecycleMappingProvider.java
new file mode 100644
index 000000000000..d438303565e0
--- /dev/null
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/EarLifecycleMappingProvider.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.maven.lifecycle.providers.packaging;
+
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+import org.apache.maven.lifecycle.providers.PluginVersions;
+
+/**
+ * {@code ear} packaging plugins bindings provider for {@code default} lifecycle.
+ *
+ * @since 3.10.0
+ */
+@Named("ear")
+@Singleton
+public final class EarLifecycleMappingProvider extends AbstractLifecycleMappingProvider {
+ // START SNIPPET: ear
+ private static final String[] BINDINGS = {
+ "generate-resources",
+ "org.apache.maven.plugins:maven-ear-plugin:" + PluginVersions.EAR_PLUGIN_VERSION
+ + ":generate-application-xml",
+ "process-resources",
+ "org.apache.maven.plugins:maven-resources-plugin:" + PluginVersions.RESOURCES_PLUGIN_VERSION
+ + ":resources",
+ "package", "org.apache.maven.plugins:maven-ear-plugin:" + PluginVersions.EAR_PLUGIN_VERSION + ":ear",
+ "install",
+ "org.apache.maven.plugins:maven-install-plugin:" + PluginVersions.INSTALL_PLUGIN_VERSION + ":install",
+ "deploy", "org.apache.maven.plugins:maven-deploy-plugin:" + PluginVersions.DEPLOY_PLUGIN_VERSION + ":deploy"
+ };
+ // END SNIPPET: ear
+
+ public EarLifecycleMappingProvider() {
+ super(BINDINGS);
+ }
+}
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/EjbLifecycleMappingProvider.java b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/EjbLifecycleMappingProvider.java
new file mode 100644
index 000000000000..bb9966174feb
--- /dev/null
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/EjbLifecycleMappingProvider.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.maven.lifecycle.providers.packaging;
+
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+import org.apache.maven.lifecycle.providers.PluginVersions;
+
+/**
+ * {@code ejb} packaging plugins bindings provider for {@code default} lifecycle.
+ *
+ * @since 3.10.0
+ */
+@Named("ejb")
+@Singleton
+public final class EjbLifecycleMappingProvider extends AbstractLifecycleMappingProvider {
+ // START SNIPPET: ejb
+ private static final String[] BINDINGS = {
+ "process-resources",
+ "org.apache.maven.plugins:maven-resources-plugin:" + PluginVersions.RESOURCES_PLUGIN_VERSION
+ + ":resources",
+ "compile",
+ "org.apache.maven.plugins:maven-compiler-plugin:" + PluginVersions.COMPILER_PLUGIN_VERSION + ":compile",
+ "process-test-resources",
+ "org.apache.maven.plugins:maven-resources-plugin:" + PluginVersions.RESOURCES_PLUGIN_VERSION
+ + ":testResources",
+ "test-compile",
+ "org.apache.maven.plugins:maven-compiler-plugin:" + PluginVersions.COMPILER_PLUGIN_VERSION
+ + ":testCompile",
+ "test", "org.apache.maven.plugins:maven-surefire-plugin:" + PluginVersions.SUREFIRE_PLUGIN_VERSION + ":test",
+ "package", "org.apache.maven.plugins:maven-ejb-plugin:" + PluginVersions.EJB_PLUGIN_VERSION + ":ejb",
+ "install",
+ "org.apache.maven.plugins:maven-install-plugin:" + PluginVersions.INSTALL_PLUGIN_VERSION + ":install",
+ "deploy", "org.apache.maven.plugins:maven-deploy-plugin:" + PluginVersions.DEPLOY_PLUGIN_VERSION + ":deploy"
+ };
+ // END SNIPPET: ejb
+
+ public EjbLifecycleMappingProvider() {
+ super(BINDINGS);
+ }
+}
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/JarLifecycleMappingProvider.java b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/JarLifecycleMappingProvider.java
new file mode 100644
index 000000000000..5c3e7e44b31e
--- /dev/null
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/JarLifecycleMappingProvider.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.maven.lifecycle.providers.packaging;
+
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+import org.apache.maven.lifecycle.providers.PluginVersions;
+
+/**
+ * {@code jar} packaging plugins bindings provider for {@code default} lifecycle.
+ *
+ * @since 3.10.0
+ */
+@Named("jar")
+@Singleton
+public final class JarLifecycleMappingProvider extends AbstractLifecycleMappingProvider {
+ // START SNIPPET: jar
+ private static final String[] BINDINGS = {
+ "process-resources",
+ "org.apache.maven.plugins:maven-resources-plugin:" + PluginVersions.RESOURCES_PLUGIN_VERSION
+ + ":resources",
+ "compile",
+ "org.apache.maven.plugins:maven-compiler-plugin:" + PluginVersions.COMPILER_PLUGIN_VERSION + ":compile",
+ "process-test-resources",
+ "org.apache.maven.plugins:maven-resources-plugin:" + PluginVersions.RESOURCES_PLUGIN_VERSION
+ + ":testResources",
+ "test-compile",
+ "org.apache.maven.plugins:maven-compiler-plugin:" + PluginVersions.COMPILER_PLUGIN_VERSION
+ + ":testCompile",
+ "test", "org.apache.maven.plugins:maven-surefire-plugin:" + PluginVersions.SUREFIRE_PLUGIN_VERSION + ":test",
+ "package", "org.apache.maven.plugins:maven-jar-plugin:" + PluginVersions.JAR_PLUGIN_VERSION + ":jar",
+ "install",
+ "org.apache.maven.plugins:maven-install-plugin:" + PluginVersions.INSTALL_PLUGIN_VERSION + ":install",
+ "deploy", "org.apache.maven.plugins:maven-deploy-plugin:" + PluginVersions.DEPLOY_PLUGIN_VERSION + ":deploy"
+ };
+ // END SNIPPET: jar
+
+ public JarLifecycleMappingProvider() {
+ super(BINDINGS);
+ }
+}
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/MavenPluginLifecycleMappingProvider.java b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/MavenPluginLifecycleMappingProvider.java
new file mode 100644
index 000000000000..2b69f452a89f
--- /dev/null
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/MavenPluginLifecycleMappingProvider.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.maven.lifecycle.providers.packaging;
+
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+import org.apache.maven.lifecycle.providers.PluginVersions;
+
+/**
+ * {@code maven-plugin} packaging plugins bindings provider for {@code default} lifecycle.
+ *
+ * @since 3.10.0
+ */
+@Named("maven-plugin")
+@Singleton
+public final class MavenPluginLifecycleMappingProvider extends AbstractLifecycleMappingProvider {
+ // START SNIPPET: maven-plugin
+ private static final String[] BINDINGS = {
+ "process-resources",
+ "org.apache.maven.plugins:maven-resources-plugin:" + PluginVersions.RESOURCES_PLUGIN_VERSION
+ + ":resources",
+ "compile",
+ "org.apache.maven.plugins:maven-compiler-plugin:" + PluginVersions.COMPILER_PLUGIN_VERSION + ":compile",
+ "process-classes",
+ "org.apache.maven.plugins:maven-plugin-plugin:" + PluginVersions.PLUGIN_PLUGIN_VERSION + ":descriptor",
+ "process-test-resources",
+ "org.apache.maven.plugins:maven-resources-plugin:" + PluginVersions.RESOURCES_PLUGIN_VERSION
+ + ":testResources",
+ "test-compile",
+ "org.apache.maven.plugins:maven-compiler-plugin:" + PluginVersions.COMPILER_PLUGIN_VERSION
+ + ":testCompile",
+ "test", "org.apache.maven.plugins:maven-surefire-plugin:" + PluginVersions.SUREFIRE_PLUGIN_VERSION + ":test",
+ "package", "org.apache.maven.plugins:maven-jar-plugin:" + PluginVersions.JAR_PLUGIN_VERSION + ":jar,",
+ "install",
+ "org.apache.maven.plugins:maven-install-plugin:" + PluginVersions.INSTALL_PLUGIN_VERSION + ":install",
+ "deploy", "org.apache.maven.plugins:maven-deploy-plugin:" + PluginVersions.DEPLOY_PLUGIN_VERSION + ":deploy"
+ };
+ // END SNIPPET: maven-plugin
+
+ public MavenPluginLifecycleMappingProvider() {
+ super(BINDINGS);
+ }
+}
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/PomLifecycleMappingProvider.java b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/PomLifecycleMappingProvider.java
new file mode 100644
index 000000000000..e0e32f6f3015
--- /dev/null
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/PomLifecycleMappingProvider.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.maven.lifecycle.providers.packaging;
+
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+import org.apache.maven.lifecycle.providers.PluginVersions;
+
+/**
+ * {@code pom} packaging plugins bindings provider for {@code default} lifecycle.
+ *
+ * @since 3.10.0
+ */
+@Named("pom")
+@Singleton
+public final class PomLifecycleMappingProvider extends AbstractLifecycleMappingProvider {
+ // START SNIPPET: pom
+ private static final String[] BINDINGS = {
+ "install",
+ "org.apache.maven.plugins:maven-install-plugin:" + PluginVersions.INSTALL_PLUGIN_VERSION + ":install",
+ "deploy", "org.apache.maven.plugins:maven-deploy-plugin:" + PluginVersions.DEPLOY_PLUGIN_VERSION + ":deploy"
+ };
+ // END SNIPPET: pom
+
+ public PomLifecycleMappingProvider() {
+ super(BINDINGS);
+ }
+}
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/RarLifecycleMappingProvider.java b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/RarLifecycleMappingProvider.java
new file mode 100644
index 000000000000..3efd77ec2a16
--- /dev/null
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/RarLifecycleMappingProvider.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.maven.lifecycle.providers.packaging;
+
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+import org.apache.maven.lifecycle.providers.PluginVersions;
+
+/**
+ * {@code rar} packaging plugins bindings provider for {@code default} lifecycle.
+ *
+ * @since 3.10.0
+ */
+@Named("rar")
+@Singleton
+public final class RarLifecycleMappingProvider extends AbstractLifecycleMappingProvider {
+ // START SNIPPET: rar
+ private static final String[] BINDINGS = {
+ "process-resources",
+ "org.apache.maven.plugins:maven-resources-plugin:" + PluginVersions.RESOURCES_PLUGIN_VERSION
+ + ":resources",
+ "compile",
+ "org.apache.maven.plugins:maven-compiler-plugin:" + PluginVersions.COMPILER_PLUGIN_VERSION + ":compile",
+ "process-test-resources",
+ "org.apache.maven.plugins:maven-resources-plugin:" + PluginVersions.RESOURCES_PLUGIN_VERSION
+ + ":testResources",
+ "test-compile",
+ "org.apache.maven.plugins:maven-compiler-plugin:" + PluginVersions.COMPILER_PLUGIN_VERSION
+ + ":testCompile",
+ "test", "org.apache.maven.plugins:maven-surefire-plugin:" + PluginVersions.SUREFIRE_PLUGIN_VERSION + ":test",
+ "package", "org.apache.maven.plugins:maven-rar-plugin:" + PluginVersions.RAR_PLUGIN_VERSION + ":rar",
+ "install",
+ "org.apache.maven.plugins:maven-install-plugin:" + PluginVersions.INSTALL_PLUGIN_VERSION + ":install",
+ "deploy", "org.apache.maven.plugins:maven-deploy-plugin:" + PluginVersions.DEPLOY_PLUGIN_VERSION + ":deploy"
+ };
+ // END SNIPPET: rar
+
+ public RarLifecycleMappingProvider() {
+ super(BINDINGS);
+ }
+}
diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/WarLifecycleMappingProvider.java b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/WarLifecycleMappingProvider.java
new file mode 100644
index 000000000000..d7a00eea3ae1
--- /dev/null
+++ b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/WarLifecycleMappingProvider.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.maven.lifecycle.providers.packaging;
+
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+import org.apache.maven.lifecycle.providers.PluginVersions;
+
+/**
+ * {@code war} packaging plugins bindings provider for {@code default} lifecycle.
+ *
+ * @since 3.10.0
+ */
+@Named("war")
+@Singleton
+public final class WarLifecycleMappingProvider extends AbstractLifecycleMappingProvider {
+ // START SNIPPET: war
+ private static final String[] BINDINGS = {
+ "process-resources",
+ "org.apache.maven.plugins:maven-resources-plugin:" + PluginVersions.RESOURCES_PLUGIN_VERSION
+ + ":resources",
+ "compile",
+ "org.apache.maven.plugins:maven-compiler-plugin:" + PluginVersions.COMPILER_PLUGIN_VERSION + ":compile",
+ "process-test-resources",
+ "org.apache.maven.plugins:maven-resources-plugin:" + PluginVersions.RESOURCES_PLUGIN_VERSION
+ + ":testResources",
+ "test-compile",
+ "org.apache.maven.plugins:maven-compiler-plugin:" + PluginVersions.COMPILER_PLUGIN_VERSION
+ + ":testCompile",
+ "test", "org.apache.maven.plugins:maven-surefire-plugin:" + PluginVersions.SUREFIRE_PLUGIN_VERSION + ":test",
+ "package", "org.apache.maven.plugins:maven-war-plugin:" + PluginVersions.WAR_PLUGIN_VERSION + ":war",
+ "install",
+ "org.apache.maven.plugins:maven-install-plugin:" + PluginVersions.INSTALL_PLUGIN_VERSION + ":install",
+ "deploy", "org.apache.maven.plugins:maven-deploy-plugin:" + PluginVersions.DEPLOY_PLUGIN_VERSION + ":deploy"
+ };
+ // END SNIPPET: war
+
+ public WarLifecycleMappingProvider() {
+ super(BINDINGS);
+ }
+}
diff --git a/maven-core/src/main/java/org/apache/maven/model/plugin/DefaultLifecycleBindingsInjector.java b/maven-core/src/main/java/org/apache/maven/model/plugin/DefaultLifecycleBindingsInjector.java
index c4eeb0f71a9e..83765928d116 100644
--- a/maven-core/src/main/java/org/apache/maven/model/plugin/DefaultLifecycleBindingsInjector.java
+++ b/maven-core/src/main/java/org/apache/maven/model/plugin/DefaultLifecycleBindingsInjector.java
@@ -18,6 +18,10 @@
*/
package org.apache.maven.model.plugin;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -38,20 +42,19 @@
import org.apache.maven.model.building.ModelProblemCollector;
import org.apache.maven.model.building.ModelProblemCollectorRequest;
import org.apache.maven.model.merge.MavenModelMerger;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
/**
* Handles injection of plugin executions induced by the lifecycle bindings for a packaging.
*
* @author Benjamin Bentmann
*/
-@Component(role = LifecycleBindingsInjector.class)
+@Singleton
+@Named
public class DefaultLifecycleBindingsInjector implements LifecycleBindingsInjector {
private LifecycleBindingsMerger merger = new LifecycleBindingsMerger();
- @Requirement
+ @Inject
private LifeCyclePluginAnalyzer lifecycle;
public void injectLifecycleBindings(Model model, ModelBuildingRequest request, ModelProblemCollector problems) {
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java b/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java
index b211c0a267a4..821f823df74f 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java
@@ -18,6 +18,10 @@
*/
package org.apache.maven.plugin;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.util.List;
@@ -31,8 +35,6 @@
import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.classworlds.realm.ClassRealm;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.repository.RemoteRepository;
@@ -42,26 +44,25 @@
/**
* DefaultBuildPluginManager
*/
-@Component(role = BuildPluginManager.class)
+@Singleton
+@Named
public class DefaultBuildPluginManager implements BuildPluginManager {
- @Requirement
+ @Inject
private MavenPluginManager mavenPluginManager;
- @Requirement
+ @Inject
private LegacySupport legacySupport;
- @Requirement
+ @Inject
private MojoExecutionScope scope;
private MojoExecutionListener mojoExecutionListener;
- // this tricks plexus-component-metadata generate required metadata
- @Requirement(role = MojoExecutionListener.class)
- private List mojoExecutionListeners;
-
+ // TODO: this is hack here; old code was tricking plexus to call setter method; to preserve binary compat, not much
+ // can be done, but marking this
+ @Inject
public void setMojoExecutionListeners(final List listeners) {
- this.mojoExecutionListeners = listeners;
this.mojoExecutionListener = new CompoundMojoExecutionListener(listeners);
}
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/DefaultExtensionRealmCache.java b/maven-core/src/main/java/org/apache/maven/plugin/DefaultExtensionRealmCache.java
index e2b712305a3f..6d24b4e59b79 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/DefaultExtensionRealmCache.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/DefaultExtensionRealmCache.java
@@ -18,6 +18,9 @@
*/
package org.apache.maven.plugin;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.io.File;
import java.util.ArrayList;
import java.util.List;
@@ -30,14 +33,14 @@
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.classworlds.realm.ClassRealm;
import org.codehaus.plexus.classworlds.realm.NoSuchRealmException;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Disposable;
+import org.eclipse.sisu.PreDestroy;
/**
* Default extension realm cache implementation. Assumes cached data does not change.
*/
-@Component(role = ExtensionRealmCache.class)
-public class DefaultExtensionRealmCache implements ExtensionRealmCache, Disposable {
+@Singleton
+@Named
+public class DefaultExtensionRealmCache implements ExtensionRealmCache {
/**
* CacheKey
*/
@@ -142,6 +145,7 @@ public void register(MavenProject project, Key key, CacheRecord record) {
// default cache does not track extension usage
}
+ @PreDestroy
public void dispose() {
flush();
}
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginArtifactsCache.java b/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginArtifactsCache.java
index f2088b593a9b..c789913c0855 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginArtifactsCache.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginArtifactsCache.java
@@ -18,6 +18,9 @@
*/
package org.apache.maven.plugin;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -29,7 +32,6 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.model.Plugin;
import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.component.annotations.Component;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.graph.DependencyFilter;
import org.eclipse.aether.repository.LocalRepository;
@@ -40,7 +42,8 @@
* @author Igor Fedorenko
* @author Benjamin Bentmann
*/
-@Component(role = PluginArtifactsCache.class)
+@Singleton
+@Named
public class DefaultPluginArtifactsCache implements PluginArtifactsCache {
/**
* CacheKey
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginDescriptorCache.java b/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginDescriptorCache.java
index 37fb478f3474..5ed28abffbc5 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginDescriptorCache.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginDescriptorCache.java
@@ -18,6 +18,9 @@
*/
package org.apache.maven.plugin;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -29,7 +32,6 @@
import org.apache.maven.model.Plugin;
import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
-import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.repository.ComponentDescriptor;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.repository.LocalRepository;
@@ -46,7 +48,8 @@
* @since 3.0
* @author Benjamin Bentmann
*/
-@Component(role = PluginDescriptorCache.class)
+@Singleton
+@Named
public class DefaultPluginDescriptorCache implements PluginDescriptorCache {
private Map descriptors = new ConcurrentHashMap<>(128);
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java b/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java
index 10321374baa0..9889b7646c56 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java
@@ -18,6 +18,9 @@
*/
package org.apache.maven.plugin;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -31,19 +34,19 @@
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.classworlds.realm.ClassRealm;
import org.codehaus.plexus.classworlds.realm.NoSuchRealmException;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Disposable;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.graph.DependencyFilter;
import org.eclipse.aether.repository.LocalRepository;
import org.eclipse.aether.repository.RemoteRepository;
import org.eclipse.aether.repository.WorkspaceRepository;
+import org.eclipse.sisu.PreDestroy;
/**
* Default PluginCache implementation. Assumes cached data does not change.
*/
-@Component(role = PluginRealmCache.class)
-public class DefaultPluginRealmCache implements PluginRealmCache, Disposable {
+@Singleton
+@Named
+public class DefaultPluginRealmCache implements PluginRealmCache {
/**
* CacheKey
*/
@@ -208,6 +211,7 @@ public void register(MavenProject project, Key key, CacheRecord record) {
// default cache does not track plugin usage
}
+ @PreDestroy
public void dispose() {
flush();
}
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultLegacySupport.java b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultLegacySupport.java
index 3cecf54e57df..188ba04e93ca 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultLegacySupport.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultLegacySupport.java
@@ -18,11 +18,13 @@
*/
package org.apache.maven.plugin.internal;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.concurrent.atomic.AtomicReference;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.LegacySupport;
-import org.codehaus.plexus.component.annotations.Component;
import org.eclipse.aether.RepositorySystemSession;
/**
@@ -33,7 +35,8 @@
* @since 3.0
* @author Benjamin Bentmann
*/
-@Component(role = LegacySupport.class)
+@Singleton
+@Named
public class DefaultLegacySupport implements LegacySupport {
private static final ThreadLocal> SESSION = new InheritableThreadLocal<>();
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
index 794e67ac57c9..edd9bb129b59 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
@@ -18,6 +18,10 @@
*/
package org.apache.maven.plugin.internal;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -83,8 +87,6 @@
import org.codehaus.plexus.DefaultPlexusContainer;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.classworlds.realm.ClassRealm;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.component.composition.CycleDetectedInComponentGraphException;
import org.codehaus.plexus.component.configurator.ComponentConfigurationException;
import org.codehaus.plexus.component.configurator.ComponentConfigurator;
@@ -118,7 +120,8 @@
* @author Benjamin Bentmann
* @since 3.0
*/
-@Component(role = MavenPluginManager.class)
+@Singleton
+@Named
public class DefaultMavenPluginManager implements MavenPluginManager {
/**
@@ -132,46 +135,46 @@ public class DefaultMavenPluginManager implements MavenPluginManager {
*/
public static final String KEY_EXTENSIONS_REALMS = DefaultMavenPluginManager.class.getName() + "/extensionsRealms";
- @Requirement
+ @Inject
private Logger logger;
- @Requirement
+ @Inject
private LoggerManager loggerManager;
- @Requirement
+ @Inject
private PlexusContainer container;
- @Requirement
+ @Inject
private ClassRealmManager classRealmManager;
- @Requirement
+ @Inject
private PluginDescriptorCache pluginDescriptorCache;
- @Requirement
+ @Inject
private PluginRealmCache pluginRealmCache;
- @Requirement
+ @Inject
private PluginDependenciesResolver pluginDependenciesResolver;
- @Requirement
+ @Inject
private RuntimeInformation runtimeInformation;
- @Requirement
+ @Inject
private ExtensionRealmCache extensionRealmCache;
- @Requirement
+ @Inject
private PluginVersionResolver pluginVersionResolver;
- @Requirement
+ @Inject
private PluginArtifactsCache pluginArtifactsCache;
- @Requirement
+ @Inject
private List configurationValidators;
- @Requirement
+ @Inject
private PluginValidationManager pluginValidationManager;
- @Requirement
+ @Inject
private List prerequisitesCheckers;
private ExtensionDescriptorBuilder extensionDescriptorBuilder = new ExtensionDescriptorBuilder();
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java
index b2264fc57611..1602607a50c9 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java
@@ -18,6 +18,10 @@
*/
package org.apache.maven.plugin.internal;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;
@@ -30,9 +34,6 @@
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Plugin;
import org.apache.maven.plugin.PluginResolutionException;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
-import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.util.StringUtils;
import org.eclipse.aether.DefaultRepositorySystemSession;
import org.eclipse.aether.RepositorySystem;
@@ -60,6 +61,8 @@
import org.eclipse.aether.util.graph.manager.DependencyManagerUtils;
import org.eclipse.aether.util.graph.selector.AndDependencySelector;
import org.eclipse.aether.util.repository.SimpleArtifactDescriptorPolicy;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Assists in resolving the dependencies of a plugin. Warning: This is an internal utility class that
@@ -69,18 +72,18 @@
* @since 3.0
* @author Benjamin Bentmann
*/
-@Component(role = PluginDependenciesResolver.class)
+@Singleton
+@Named
public class DefaultPluginDependenciesResolver implements PluginDependenciesResolver {
private static final String REPOSITORY_CONTEXT = "plugin";
- @Requirement
- private Logger logger;
+ private final Logger logger = LoggerFactory.getLogger(getClass());
- @Requirement
+ @Inject
private RepositorySystem repoSystem;
- @Requirement
+ @Inject
private List dependenciesValidators;
private Artifact toArtifact(Plugin plugin, RepositorySystemSession session) {
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginManager.java b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginManager.java
index 697e4e64d41d..2596c6501853 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginManager.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginManager.java
@@ -18,6 +18,10 @@
*/
package org.apache.maven.plugin.internal;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.Map;
import org.apache.maven.artifact.repository.ArtifactRepository;
@@ -54,29 +58,28 @@
import org.apache.maven.project.artifact.InvalidDependencyVersionException;
import org.apache.maven.settings.Settings;
import org.codehaus.plexus.PlexusContainer;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
/**
* @author Benjamin Bentmann
*/
-@Component(role = PluginManager.class)
+@Singleton
+@Named
public class DefaultPluginManager implements PluginManager {
- @Requirement
+ @Inject
private PlexusContainer container;
- @Requirement
+ @Inject
private MavenPluginManager pluginManager;
- @Requirement
+ @Inject
private PluginVersionResolver pluginVersionResolver;
- @Requirement
+ @Inject
private PluginPrefixResolver pluginPrefixResolver;
- @Requirement
+ @Inject
private LegacySupport legacySupport;
public void executeMojo(MavenProject project, MojoExecution execution, MavenSession session)
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/prefix/internal/DefaultPluginPrefixResolver.java b/maven-core/src/main/java/org/apache/maven/plugin/prefix/internal/DefaultPluginPrefixResolver.java
index d2566b6ffb3f..207fe8ac1b03 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/prefix/internal/DefaultPluginPrefixResolver.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/prefix/internal/DefaultPluginPrefixResolver.java
@@ -18,6 +18,10 @@
*/
package org.apache.maven.plugin.prefix.internal;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
@@ -40,9 +44,6 @@
import org.apache.maven.plugin.prefix.PluginPrefixRequest;
import org.apache.maven.plugin.prefix.PluginPrefixResolver;
import org.apache.maven.plugin.prefix.PluginPrefixResult;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
-import org.codehaus.plexus.logging.Logger;
import org.eclipse.aether.DefaultRepositorySystemSession;
import org.eclipse.aether.RepositoryEvent;
import org.eclipse.aether.RepositoryEvent.EventType;
@@ -56,6 +57,8 @@
import org.eclipse.aether.repository.RepositoryPolicy;
import org.eclipse.aether.resolution.MetadataRequest;
import org.eclipse.aether.resolution.MetadataResult;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Resolves a plugin prefix.
@@ -63,21 +66,21 @@
* @since 3.0
* @author Benjamin Bentmann
*/
-@Component(role = PluginPrefixResolver.class)
+@Singleton
+@Named
public class DefaultPluginPrefixResolver implements PluginPrefixResolver {
private static final String REPOSITORY_CONTEXT = "plugin";
- @Requirement
- private Logger logger;
+ private final Logger logger = LoggerFactory.getLogger(getClass());
- @Requirement
+ @Inject
private BuildPluginManager pluginManager;
- @Requirement
+ @Inject
private RepositorySystem repositorySystem;
- @Requirement
+ @Inject
private MetadataReader metadataReader;
public PluginPrefixResult resolve(PluginPrefixRequest request) throws NoPluginFoundForPrefixException {
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/version/internal/DefaultPluginVersionResolver.java b/maven-core/src/main/java/org/apache/maven/plugin/version/internal/DefaultPluginVersionResolver.java
index e732ed12a4e1..adee6f4f0339 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/version/internal/DefaultPluginVersionResolver.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/version/internal/DefaultPluginVersionResolver.java
@@ -18,6 +18,10 @@
*/
package org.apache.maven.plugin.version.internal;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
@@ -42,9 +46,6 @@
import org.apache.maven.plugin.version.PluginVersionResolutionException;
import org.apache.maven.plugin.version.PluginVersionResolver;
import org.apache.maven.plugin.version.PluginVersionResult;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
-import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.util.StringUtils;
import org.eclipse.aether.RepositoryEvent;
import org.eclipse.aether.RepositoryEvent.EventType;
@@ -62,6 +63,8 @@
import org.eclipse.aether.version.InvalidVersionSpecificationException;
import org.eclipse.aether.version.Version;
import org.eclipse.aether.version.VersionScheme;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Resolves a version for a plugin.
@@ -69,23 +72,23 @@
* @since 3.0
* @author Benjamin Bentmann
*/
-@Component(role = PluginVersionResolver.class)
+@Singleton
+@Named
public class DefaultPluginVersionResolver implements PluginVersionResolver {
private static final String REPOSITORY_CONTEXT = "plugin";
private static final Object CACHE_KEY = new Object();
- @Requirement
- private Logger logger;
+ private final Logger logger = LoggerFactory.getLogger(getClass());
- @Requirement
+ @Inject
private RepositorySystem repositorySystem;
- @Requirement
+ @Inject
private MetadataReader metadataReader;
- @Requirement
+ @Inject
private MavenPluginManager pluginManager;
public PluginVersionResult resolve(PluginVersionRequest request) throws PluginVersionResolutionException {
diff --git a/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectHelper.java b/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectHelper.java
index f2005753bfb1..50274c70b72d 100644
--- a/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectHelper.java
+++ b/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectHelper.java
@@ -18,6 +18,10 @@
*/
package org.apache.maven.project;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.io.File;
import java.util.List;
@@ -26,17 +30,19 @@
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
import org.apache.maven.model.Resource;
import org.apache.maven.project.artifact.AttachedArtifact;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* DefaultMavenProjectHelper
*/
@SuppressWarnings("deprecation")
-@Component(role = MavenProjectHelper.class)
-public class DefaultMavenProjectHelper extends AbstractLogEnabled implements MavenProjectHelper {
- @Requirement
+@Singleton
+@Named
+public class DefaultMavenProjectHelper implements MavenProjectHelper {
+ protected final Logger logger = LoggerFactory.getLogger(getClass());
+
+ @Inject
private ArtifactHandlerManager artifactHandlerManager;
public void attachArtifact(
diff --git a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
index b9592462ef57..419c371b9cae 100644
--- a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
+++ b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
@@ -18,6 +18,10 @@
*/
package org.apache.maven.project;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.io.File;
import java.io.IOException;
import java.util.AbstractMap;
@@ -64,9 +68,6 @@
import org.apache.maven.repository.internal.ArtifactDescriptorUtils;
import org.apache.maven.repository.internal.DefaultModelCacheFactory;
import org.apache.maven.repository.internal.ModelCacheFactory;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
-import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.util.Os;
import org.codehaus.plexus.util.StringUtils;
import org.eclipse.aether.RepositorySystemSession;
@@ -77,41 +78,43 @@
import org.eclipse.aether.repository.WorkspaceRepository;
import org.eclipse.aether.resolution.ArtifactRequest;
import org.eclipse.aether.resolution.ArtifactResult;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* DefaultProjectBuilder
*/
-@Component(role = ProjectBuilder.class)
+@Singleton
+@Named
public class DefaultProjectBuilder implements ProjectBuilder {
public static final String DISABLE_GLOBAL_MODEL_CACHE_SYSTEM_PROPERTY =
"maven.defaultProjectBuilder.disableGlobalModelCache";
- @Requirement
- private Logger logger;
+ private final Logger logger = LoggerFactory.getLogger(getClass());
- @Requirement
+ @Inject
private ModelBuilder modelBuilder;
- @Requirement
+ @Inject
private ModelProcessor modelProcessor;
- @Requirement
+ @Inject
private ProjectBuildingHelper projectBuildingHelper;
- @Requirement
+ @Inject
private MavenRepositorySystem repositorySystem;
- @Requirement
+ @Inject
private org.eclipse.aether.RepositorySystem repoSystem;
- @Requirement
+ @Inject
private RemoteRepositoryManager repositoryManager;
- @Requirement
+ @Inject
private ProjectDependenciesResolver dependencyResolver;
- @Requirement
+ @Inject
private ModelCacheFactory modelCacheFactory;
// ----------------------------------------------------------------------
diff --git a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java
index 6d585d524265..33a50408eb36 100644
--- a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java
+++ b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java
@@ -18,6 +18,10 @@
*/
package org.apache.maven.project;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -46,11 +50,10 @@
import org.apache.maven.plugin.version.PluginVersionResolutionException;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.classworlds.realm.ClassRealm;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
-import org.codehaus.plexus.logging.Logger;
import org.eclipse.aether.graph.DependencyFilter;
import org.eclipse.aether.util.filter.ExclusionsDependencyFilter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Assists the project builder. Warning: This is an internal utility class that is only public for
@@ -59,25 +62,25 @@
*
* @author Benjamin Bentmann
*/
-@Component(role = ProjectBuildingHelper.class)
+@Singleton
+@Named
public class DefaultProjectBuildingHelper implements ProjectBuildingHelper {
- @Requirement
- private Logger logger;
+ private final Logger logger = LoggerFactory.getLogger(getClass());
- @Requirement
+ @Inject
private PlexusContainer container;
- @Requirement
+ @Inject
private ClassRealmManager classRealmManager;
- @Requirement
+ @Inject
private ProjectRealmCache projectRealmCache;
- @Requirement
+ @Inject
private MavenRepositorySystem repositorySystem;
- @Requirement
+ @Inject
private MavenPluginManager pluginManager;
public List createArtifactRepositories(
diff --git a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectDependenciesResolver.java b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectDependenciesResolver.java
index dc4f3f173519..dc59ccddb1e0 100644
--- a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectDependenciesResolver.java
+++ b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectDependenciesResolver.java
@@ -18,6 +18,10 @@
*/
package org.apache.maven.project;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
@@ -29,9 +33,6 @@
import org.apache.maven.model.Dependency;
import org.apache.maven.model.DependencyManagement;
import org.apache.maven.model.Exclusion;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
-import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.util.StringUtils;
import org.eclipse.aether.DefaultRepositorySystemSession;
import org.eclipse.aether.RepositorySystem;
@@ -49,20 +50,22 @@
import org.eclipse.aether.util.artifact.ArtifactIdUtils;
import org.eclipse.aether.util.artifact.JavaScopes;
import org.eclipse.aether.util.graph.manager.DependencyManagerUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* @author Benjamin Bentmann
*/
-@Component(role = ProjectDependenciesResolver.class)
+@Singleton
+@Named
public class DefaultProjectDependenciesResolver implements ProjectDependenciesResolver {
- @Requirement
- private Logger logger;
+ private final Logger logger = LoggerFactory.getLogger(getClass());
- @Requirement
+ @Inject
private RepositorySystem repoSystem;
- @Requirement
+ @Inject
private List decorators;
public DependencyResolutionResult resolve(DependencyResolutionRequest request)
diff --git a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectRealmCache.java b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectRealmCache.java
index 1a1f706380dd..d736cca01337 100644
--- a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectRealmCache.java
+++ b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectRealmCache.java
@@ -18,6 +18,9 @@
*/
package org.apache.maven.project;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -26,15 +29,15 @@
import org.codehaus.plexus.classworlds.realm.ClassRealm;
import org.codehaus.plexus.classworlds.realm.NoSuchRealmException;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Disposable;
import org.eclipse.aether.graph.DependencyFilter;
+import org.eclipse.sisu.PreDestroy;
/**
* Default project realm cache implementation. Assumes cached data does not change.
*/
-@Component(role = ProjectRealmCache.class)
-public class DefaultProjectRealmCache implements ProjectRealmCache, Disposable {
+@Singleton
+@Named
+public class DefaultProjectRealmCache implements ProjectRealmCache {
/**
* CacheKey
*/
@@ -119,7 +122,7 @@ public void register(MavenProject project, Key key, CacheRecord record) {
// default cache does not track record usage
}
- @Override
+ @PreDestroy
public void dispose() {
flush();
}
diff --git a/maven-core/src/main/java/org/apache/maven/project/artifact/DefaultMavenMetadataCache.java b/maven-core/src/main/java/org/apache/maven/project/artifact/DefaultMavenMetadataCache.java
index 73c57c83b613..edfe0e0d3629 100644
--- a/maven-core/src/main/java/org/apache/maven/project/artifact/DefaultMavenMetadataCache.java
+++ b/maven-core/src/main/java/org/apache/maven/project/artifact/DefaultMavenMetadataCache.java
@@ -18,6 +18,9 @@
*/
package org.apache.maven.project.artifact;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
@@ -34,12 +37,12 @@
import org.apache.maven.artifact.metadata.ResolutionGroup;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
-import org.codehaus.plexus.component.annotations.Component;
/**
* DefaultMavenMetadataCache
*/
-@Component(role = MavenMetadataCache.class)
+@Singleton
+@Named
public class DefaultMavenMetadataCache implements MavenMetadataCache {
protected final Map cache = new ConcurrentHashMap<>();
diff --git a/maven-core/src/main/java/org/apache/maven/project/artifact/DefaultMetadataSource.java b/maven-core/src/main/java/org/apache/maven/project/artifact/DefaultMetadataSource.java
index bed4d2ff79c9..43a42df15506 100644
--- a/maven-core/src/main/java/org/apache/maven/project/artifact/DefaultMetadataSource.java
+++ b/maven-core/src/main/java/org/apache/maven/project/artifact/DefaultMetadataSource.java
@@ -18,8 +18,8 @@
*/
package org.apache.maven.project.artifact;
-import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
-import org.codehaus.plexus.component.annotations.Component;
+import javax.inject.Named;
+import javax.inject.Singleton;
/**
* This realizes the metadata source via the default hint to provide backward-compat with Maven 2.x whose Plexus version
@@ -28,5 +28,6 @@
*
* @author Benjamin Bentmann
*/
-@Component(role = ArtifactMetadataSource.class)
+@Singleton
+@Named
public class DefaultMetadataSource extends MavenMetadataSource {}
diff --git a/maven-core/src/main/java/org/apache/maven/project/artifact/DefaultProjectArtifactsCache.java b/maven-core/src/main/java/org/apache/maven/project/artifact/DefaultProjectArtifactsCache.java
index 0e59582e8182..d453a8aafd61 100644
--- a/maven-core/src/main/java/org/apache/maven/project/artifact/DefaultProjectArtifactsCache.java
+++ b/maven-core/src/main/java/org/apache/maven/project/artifact/DefaultProjectArtifactsCache.java
@@ -18,6 +18,9 @@
*/
package org.apache.maven.project.artifact;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -33,7 +36,6 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.lifecycle.LifecycleExecutionException;
import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.component.annotations.Component;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.repository.LocalRepository;
import org.eclipse.aether.repository.RemoteRepository;
@@ -44,7 +46,8 @@
* @author Benjamin Bentmann
* @author Anton Tanasenko
*/
-@Component(role = ProjectArtifactsCache.class)
+@Singleton
+@Named
public class DefaultProjectArtifactsCache implements ProjectArtifactsCache {
/**
* CacheKey
diff --git a/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java b/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
index 9df7059d070e..1a127e33a200 100644
--- a/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
+++ b/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
@@ -18,6 +18,11 @@
*/
package org.apache.maven.project.artifact;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Provider;
+import javax.inject.Singleton;
+
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
@@ -77,44 +82,38 @@
import org.apache.maven.repository.internal.MavenWorkspaceReader;
import org.apache.maven.repository.legacy.metadata.DefaultMetadataResolutionRequest;
import org.apache.maven.repository.legacy.metadata.MetadataResolutionRequest;
-import org.codehaus.plexus.PlexusContainer;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
-import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
-import org.codehaus.plexus.logging.Logger;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.repository.RepositoryPolicy;
import org.eclipse.aether.repository.WorkspaceReader;
import org.eclipse.aether.transfer.ArtifactNotFoundException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* @author Jason van Zyl
*/
-@Component(role = ArtifactMetadataSource.class, hint = "maven")
+@Singleton
+@Named("maven")
public class MavenMetadataSource implements ArtifactMetadataSource {
- @Requirement
+
+ private final Logger logger = LoggerFactory.getLogger(getClass());
+
+ @Inject
private RepositoryMetadataManager repositoryMetadataManager;
- @Requirement
+ @Inject
private ArtifactFactory artifactFactory;
- @Requirement
+ @Inject
private MavenRepositorySystem repositorySystem;
- // TODO This prevents a cycle in the composition which shows us another problem we need to deal with.
- // @Requirement
- private ProjectBuilder projectBuilder;
-
- @Requirement
- private PlexusContainer container;
-
- @Requirement
- private Logger logger;
+ @Inject
+ private Provider projectBuilderProvider;
- @Requirement
+ @Inject
private MavenMetadataCache cache;
- @Requirement
+ @Inject
private LegacySupport legacySupport;
private void injectSession(MetadataResolutionRequest request) {
@@ -513,17 +512,7 @@ public static Set createArtifacts(
}
private ProjectBuilder getProjectBuilder() {
- if (projectBuilder != null) {
- return projectBuilder;
- }
-
- try {
- projectBuilder = container.lookup(ProjectBuilder.class);
- } catch (ComponentLookupException e) {
- // Won't happen
- }
-
- return projectBuilder;
+ return projectBuilderProvider.get();
}
@SuppressWarnings("checkstyle:methodlength")
diff --git a/maven-core/src/main/java/org/apache/maven/rtinfo/internal/DefaultRuntimeInformation.java b/maven-core/src/main/java/org/apache/maven/rtinfo/internal/DefaultRuntimeInformation.java
index 1a9da2f6992e..12637fb86787 100644
--- a/maven-core/src/main/java/org/apache/maven/rtinfo/internal/DefaultRuntimeInformation.java
+++ b/maven-core/src/main/java/org/apache/maven/rtinfo/internal/DefaultRuntimeInformation.java
@@ -18,29 +18,31 @@
*/
package org.apache.maven.rtinfo.internal;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.io.IOException;
import java.io.InputStream;
import java.util.Objects;
import java.util.Properties;
import org.apache.maven.rtinfo.RuntimeInformation;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
-import org.codehaus.plexus.logging.Logger;
import org.eclipse.aether.util.version.GenericVersionScheme;
import org.eclipse.aether.version.InvalidVersionSpecificationException;
import org.eclipse.aether.version.Version;
import org.eclipse.aether.version.VersionConstraint;
import org.eclipse.aether.version.VersionScheme;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Provides information about the current Maven runtime.
*/
-@Component(role = RuntimeInformation.class)
+@Singleton
+@Named
public class DefaultRuntimeInformation implements RuntimeInformation {
- @Requirement
- private Logger logger;
+ private final Logger logger = LoggerFactory.getLogger(getClass());
private String mavenVersion;
diff --git a/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java b/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java
index 9b1254f5063f..ed1111fa4a18 100644
--- a/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java
+++ b/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java
@@ -18,6 +18,10 @@
*/
package org.apache.maven.settings;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.io.File;
import java.io.IOException;
@@ -27,19 +31,20 @@
import org.apache.maven.settings.building.SettingsBuilder;
import org.apache.maven.settings.building.SettingsBuildingException;
import org.apache.maven.settings.building.SettingsBuildingRequest;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* @author jdcasey
*/
-@Component(role = MavenSettingsBuilder.class)
-public class DefaultMavenSettingsBuilder extends AbstractLogEnabled implements MavenSettingsBuilder {
+@Singleton
+@Named
+public class DefaultMavenSettingsBuilder implements MavenSettingsBuilder {
+ protected final Logger logger = LoggerFactory.getLogger(getClass());
- @Requirement
+ @Inject
private SettingsBuilder settingsBuilder;
public Settings buildSettings() throws IOException, XmlPullParserException {
diff --git a/maven-core/src/main/java/org/apache/maven/toolchain/DefaultToolchainManager.java b/maven-core/src/main/java/org/apache/maven/toolchain/DefaultToolchainManager.java
index ee20d8f999c7..3c1a36ffa18b 100644
--- a/maven-core/src/main/java/org/apache/maven/toolchain/DefaultToolchainManager.java
+++ b/maven-core/src/main/java/org/apache/maven/toolchain/DefaultToolchainManager.java
@@ -18,6 +18,10 @@
*/
package org.apache.maven.toolchain;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -28,19 +32,18 @@
import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.project.MavenProject;
import org.apache.maven.toolchain.model.ToolchainModel;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.logging.Logger;
/**
* @author mkleint
*/
-@Component(role = ToolchainManager.class)
+@Singleton
+@Named
public class DefaultToolchainManager implements ToolchainManager {
- @Requirement
+ @Inject
Logger logger;
- @Requirement(role = ToolchainFactory.class)
+ @Inject
Map factories;
@Override
diff --git a/maven-core/src/main/java/org/apache/maven/toolchain/DefaultToolchainManagerPrivate.java b/maven-core/src/main/java/org/apache/maven/toolchain/DefaultToolchainManagerPrivate.java
index e26580212fd9..2a004f8ba8cc 100644
--- a/maven-core/src/main/java/org/apache/maven/toolchain/DefaultToolchainManagerPrivate.java
+++ b/maven-core/src/main/java/org/apache/maven/toolchain/DefaultToolchainManagerPrivate.java
@@ -18,19 +18,22 @@
*/
package org.apache.maven.toolchain;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.toolchain.model.ToolchainModel;
-import org.codehaus.plexus.component.annotations.Component;
/**
* @author mkleint
* @author Robert Scholte
*/
-@Component(role = ToolchainManagerPrivate.class)
+@Singleton
+@Named
public class DefaultToolchainManagerPrivate extends DefaultToolchainManager implements ToolchainManagerPrivate {
@Override
diff --git a/maven-core/src/main/java/org/apache/maven/toolchain/DefaultToolchainsBuilder.java b/maven-core/src/main/java/org/apache/maven/toolchain/DefaultToolchainsBuilder.java
index db90a8ce5fb6..1caa374c9f9d 100644
--- a/maven-core/src/main/java/org/apache/maven/toolchain/DefaultToolchainsBuilder.java
+++ b/maven-core/src/main/java/org/apache/maven/toolchain/DefaultToolchainsBuilder.java
@@ -18,13 +18,15 @@
*/
package org.apache.maven.toolchain;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.io.File;
import java.io.Reader;
import org.apache.maven.toolchain.model.PersistedToolchains;
import org.apache.maven.toolchain.model.io.xpp3.MavenToolchainsXpp3Reader;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.util.ReaderFactory;
@@ -33,10 +35,11 @@
* @deprecated instead use {@link org.apache.maven.toolchain.building.DefaultToolchainsBuilder}
*/
@Deprecated
-@Component(role = ToolchainsBuilder.class, hint = "default")
+@Singleton
+@Named
public class DefaultToolchainsBuilder implements ToolchainsBuilder {
- @Requirement
+ @Inject
private Logger logger;
public PersistedToolchains build(File userToolchainsFile) throws MisconfiguredToolchainException {
diff --git a/maven-core/src/main/java/org/apache/maven/toolchain/java/JavaToolchainFactory.java b/maven-core/src/main/java/org/apache/maven/toolchain/java/JavaToolchainFactory.java
index acdcbe8ba3a7..292461818d69 100644
--- a/maven-core/src/main/java/org/apache/maven/toolchain/java/JavaToolchainFactory.java
+++ b/maven-core/src/main/java/org/apache/maven/toolchain/java/JavaToolchainFactory.java
@@ -18,6 +18,10 @@
*/
package org.apache.maven.toolchain.java;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.io.File;
import java.util.Map.Entry;
import java.util.Properties;
@@ -28,8 +32,6 @@
import org.apache.maven.toolchain.ToolchainFactory;
import org.apache.maven.toolchain.ToolchainPrivate;
import org.apache.maven.toolchain.model.ToolchainModel;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.util.FileUtils;
import org.codehaus.plexus.util.xml.Xpp3Dom;
@@ -42,10 +44,11 @@
* @author mkleint
* @since 2.0.9, renamed from DefaultJavaToolchainFactory in 3.2.4
*/
-@Component(role = ToolchainFactory.class, hint = "jdk")
+@Singleton
+@Named("jdk")
public class JavaToolchainFactory implements ToolchainFactory {
- @Requirement
+ @Inject
private Logger logger;
public ToolchainPrivate createToolchain(ToolchainModel model) throws MisconfiguredToolchainException {
diff --git a/maven-core/src/main/resources/META-INF/plexus/artifact-handlers.xml b/maven-core/src/main/resources/META-INF/plexus/artifact-handlers.xml
deleted file mode 100644
index 2f26ce2e29ee..000000000000
--- a/maven-core/src/main/resources/META-INF/plexus/artifact-handlers.xml
+++ /dev/null
@@ -1,194 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- org.apache.maven.artifact.handler.ArtifactHandler
- pom
- org.apache.maven.artifact.handler.DefaultArtifactHandler
-
- pom
-
-
-
-
-
- org.apache.maven.artifact.handler.ArtifactHandler
- jar
- org.apache.maven.artifact.handler.DefaultArtifactHandler
-
- jar
- java
- true
-
-
-
-
-
- org.apache.maven.artifact.handler.ArtifactHandler
- ejb
- org.apache.maven.artifact.handler.DefaultArtifactHandler
-
- ejb
- jar
- java
- true
-
-
-
- org.apache.maven.artifact.handler.ArtifactHandler
- ejb-client
- org.apache.maven.artifact.handler.DefaultArtifactHandler
-
- ejb-client
- jar
- ejb
- client
- java
- true
-
-
-
-
-
- org.apache.maven.artifact.handler.ArtifactHandler
- test-jar
- org.apache.maven.artifact.handler.DefaultArtifactHandler
-
- tests
- jar
- test-jar
- jar
- java
- true
-
-
-
-
-
- org.apache.maven.artifact.handler.ArtifactHandler
- maven-plugin
- org.apache.maven.artifact.handler.DefaultArtifactHandler
-
- maven-plugin
- jar
- java
- true
-
-
-
-
-
- org.apache.maven.artifact.handler.ArtifactHandler
- java-source
- org.apache.maven.artifact.handler.DefaultArtifactHandler
-
- sources
- java-source
- jar
- java
- false
-
-
-
-
-
- org.apache.maven.artifact.handler.ArtifactHandler
- javadoc
- org.apache.maven.artifact.handler.DefaultArtifactHandler
-
- javadoc
- javadoc
- jar
- java
- true
-
-
-
-
-
- org.apache.maven.artifact.handler.ArtifactHandler
- war
- org.apache.maven.artifact.handler.DefaultArtifactHandler
-
- war
- true
- java
- false
-
-
-
-
-
- org.apache.maven.artifact.handler.ArtifactHandler
- ear
- org.apache.maven.artifact.handler.DefaultArtifactHandler
-
- ear
- true
- java
- false
-
-
-
-
-
- org.apache.maven.artifact.handler.ArtifactHandler
- rar
- org.apache.maven.artifact.handler.DefaultArtifactHandler
-
- rar
- true
- java
- false
-
-
-
-
-
diff --git a/maven-core/src/main/resources/META-INF/plexus/components.xml b/maven-core/src/main/resources/META-INF/plexus/components.xml
deleted file mode 100644
index 6560e023d8a9..000000000000
--- a/maven-core/src/main/resources/META-INF/plexus/components.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-
-
-
-
-
-
-
-
-
- org.apache.maven.lifecycle.Lifecycle
- org.apache.maven.lifecycle.Lifecycle
- default
-
- default
-
-
- validate
- initialize
- generate-sources
- process-sources
- generate-resources
- process-resources
- compile
- process-classes
- generate-test-sources
- process-test-sources
- generate-test-resources
- process-test-resources
- test-compile
- process-test-classes
- test
- prepare-package
- package
- pre-integration-test
- integration-test
- post-integration-test
- verify
- install
- deploy
-
-
-
-
-
-
-
- org.apache.maven.lifecycle.Lifecycle
- org.apache.maven.lifecycle.Lifecycle
- clean
-
- clean
-
-
- pre-clean
- clean
- post-clean
-
-
-
- org.apache.maven.plugins:maven-clean-plugin:3.2.0:clean
-
-
-
-
-
-
-
-
- org.apache.maven.lifecycle.Lifecycle
- org.apache.maven.lifecycle.Lifecycle
- site
-
- site
-
-
- pre-site
- site
- post-site
- site-deploy
-
-
-
- org.apache.maven.plugins:maven-site-plugin:3.12.1:site
-
-
- org.apache.maven.plugins:maven-site-plugin:3.12.1:deploy
-
-
-
-
-
-
-
diff --git a/maven-core/src/main/resources/META-INF/plexus/default-bindings.xml b/maven-core/src/main/resources/META-INF/plexus/default-bindings.xml
deleted file mode 100644
index 93da2187cac8..000000000000
--- a/maven-core/src/main/resources/META-INF/plexus/default-bindings.xml
+++ /dev/null
@@ -1,315 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- org.apache.maven.lifecycle.mapping.LifecycleMapping
- pom
- org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping
-
-
-
- default
-
-
-
- org.apache.maven.plugins:maven-install-plugin:3.1.4:install
-
-
- org.apache.maven.plugins:maven-deploy-plugin:3.1.4:deploy
-
-
-
-
-
-
-
-
-
-
- org.apache.maven.lifecycle.mapping.LifecycleMapping
- jar
- org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping
-
-
-
- default
-
-
-
- org.apache.maven.plugins:maven-resources-plugin:3.4.0:resources
-
-
- org.apache.maven.plugins:maven-compiler-plugin:3.15.0:compile
-
-
- org.apache.maven.plugins:maven-resources-plugin:3.4.0:testResources
-
-
- org.apache.maven.plugins:maven-compiler-plugin:3.15.0:testCompile
-
-
- org.apache.maven.plugins:maven-surefire-plugin:3.5.4:test
-
-
- org.apache.maven.plugins:maven-jar-plugin:3.5.0:jar
-
-
- org.apache.maven.plugins:maven-install-plugin:3.1.4:install
-
-
- org.apache.maven.plugins:maven-deploy-plugin:3.1.4:deploy
-
-
-
-
-
-
-
-
-
-
- org.apache.maven.lifecycle.mapping.LifecycleMapping
- ejb
- org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping
-
-
-
- default
-
-
-
- org.apache.maven.plugins:maven-resources-plugin:3.4.0:resources
-
-
- org.apache.maven.plugins:maven-compiler-plugin:3.15.0:compile
-
-
- org.apache.maven.plugins:maven-resources-plugin:3.4.0:testResources
-
-
- org.apache.maven.plugins:maven-compiler-plugin:3.15.0:testCompile
-
-
- org.apache.maven.plugins:maven-surefire-plugin:3.5.4:test
-
-
- org.apache.maven.plugins:maven-ejb-plugin:3.3.0:ejb
-
-
- org.apache.maven.plugins:maven-install-plugin:3.1.4:install
-
-
- org.apache.maven.plugins:maven-deploy-plugin:3.1.4:deploy
-
-
-
-
-
-
-
-
-
-
- org.apache.maven.lifecycle.mapping.LifecycleMapping
- maven-plugin
- org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping
-
-
-
- default
-
-
-
- org.apache.maven.plugins:maven-resources-plugin:3.4.0:resources
-
-
- org.apache.maven.plugins:maven-compiler-plugin:3.15.0:compile
-
-
- org.apache.maven.plugins:maven-plugin-plugin:3.15.2:descriptor
-
-
- org.apache.maven.plugins:maven-resources-plugin:3.4.0:testResources
-
-
- org.apache.maven.plugins:maven-compiler-plugin:3.15.0:testCompile
-
-
- org.apache.maven.plugins:maven-surefire-plugin:3.5.4:test
-
-
- org.apache.maven.plugins:maven-jar-plugin:3.5.0:jar
-
-
- org.apache.maven.plugins:maven-install-plugin:3.1.4:install
-
-
- org.apache.maven.plugins:maven-deploy-plugin:3.1.4:deploy
-
-
-
-
-
-
-
-
-
-
- org.apache.maven.lifecycle.mapping.LifecycleMapping
- war
- org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping
-
-
-
- default
-
-
-
- org.apache.maven.plugins:maven-resources-plugin:3.4.0:resources
-
-
- org.apache.maven.plugins:maven-compiler-plugin:3.15.0:compile
-
-
- org.apache.maven.plugins:maven-resources-plugin:3.4.0:testResources
-
-
- org.apache.maven.plugins:maven-compiler-plugin:3.15.0:testCompile
-
-
- org.apache.maven.plugins:maven-surefire-plugin:3.5.4:test
-
-
- org.apache.maven.plugins:maven-war-plugin:3.5.1:war
-
-
- org.apache.maven.plugins:maven-install-plugin:3.1.4:install
-
-
- org.apache.maven.plugins:maven-deploy-plugin:3.1.4:deploy
-
-
-
-
-
-
-
-
-
-
- org.apache.maven.lifecycle.mapping.LifecycleMapping
- ear
- org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping
-
-
-
- default
-
-
-
- org.apache.maven.plugins:maven-ear-plugin:3.4.0:generate-application-xml
-
-
- org.apache.maven.plugins:maven-resources-plugin:3.4.0:resources
-
-
- org.apache.maven.plugins:maven-ear-plugin:3.4.0:ear
-
-
- org.apache.maven.plugins:maven-install-plugin:3.1.4:install
-
-
- org.apache.maven.plugins:maven-deploy-plugin:3.1.4:deploy
-
-
-
-
-
-
-
-
-
-
- org.apache.maven.lifecycle.mapping.LifecycleMapping
- rar
- org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping
-
-
-
- default
-
-
-
- org.apache.maven.plugins:maven-resources-plugin:3.4.0:resources
-
-
- org.apache.maven.plugins:maven-compiler-plugin:3.15.0:compile
-
-
- org.apache.maven.plugins:maven-resources-plugin:3.4.0:testResources
-
-
- org.apache.maven.plugins:maven-compiler-plugin:3.15.0:testCompile
-
-
- org.apache.maven.plugins:maven-surefire-plugin:3.5.4:test
-
-
- org.apache.maven.plugins:maven-rar-plugin:3.1.0:rar
-
-
- org.apache.maven.plugins:maven-install-plugin:3.1.4:install
-
-
- org.apache.maven.plugins:maven-deploy-plugin:3.1.4:deploy
-
-
-
-
-
-
-
-
-
-
diff --git a/maven-core/src/main/resources/org/apache/maven/lifecycle/providers/plugin-versions.properties b/maven-core/src/main/resources/org/apache/maven/lifecycle/providers/plugin-versions.properties
new file mode 100644
index 000000000000..344072cadbf3
--- /dev/null
+++ b/maven-core/src/main/resources/org/apache/maven/lifecycle/providers/plugin-versions.properties
@@ -0,0 +1,33 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# this file lists plugin versions used by Maven 3 build; same versions are used in lifecycle mappings
+# AbstractLifecycleProvider
+maven-clean-plugin=${version.maven-clean-plugin}
+maven-site-plugin=${version.maven-site-plugin}
+# AbstractLifecycleMappingProvider
+maven-resources-plugin=${version.maven-resources-plugin}
+maven-compiler-plugin=${version.maven-compiler-plugin}
+maven-surefire-plugin=${version.maven-surefire}
+maven-install-plugin=${version.maven-install-plugin}
+maven-deploy-plugin=${version.maven-deploy-plugin}
+maven-jar-plugin=${version.maven-jar-plugin}
+maven-ear-plugin=${version.maven-ear-plugin}
+maven-ejb-plugin=${version.maven-ejb-plugin}
+maven-plugin-plugin=${version.maven-plugin-tools}
+maven-rar-plugin=${version.maven-rar-plugin}
+maven-war-plugin=${version.maven-war-plugin}
diff --git a/maven-core/src/test/java/org/apache/maven/DefaultMavenTest.java b/maven-core/src/test/java/org/apache/maven/DefaultMavenTest.java
index 96c914b2bd45..1d530cad86c5 100644
--- a/maven-core/src/test/java/org/apache/maven/DefaultMavenTest.java
+++ b/maven-core/src/test/java/org/apache/maven/DefaultMavenTest.java
@@ -19,6 +19,8 @@
package org.apache.maven;
import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
import java.io.File;
import java.nio.file.Files;
@@ -32,7 +34,6 @@
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectHelper;
import org.apache.maven.repository.internal.MavenWorkspaceReader;
-import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.testing.PlexusTest;
import org.junit.jupiter.api.Test;
@@ -49,7 +50,8 @@ public class DefaultMavenTest extends AbstractCoreMavenComponentTestCase {
@Inject
private MavenProjectHelper mavenProjectHelper;
- @Component(role = AbstractMavenLifecycleParticipant.class, hint = "WsrClassCatcher")
+ @Singleton
+ @Named("WsrClassCatcher")
private static final class WsrClassCatcher extends AbstractMavenLifecycleParticipant {
private final AtomicReference> wsrClassRef = new AtomicReference<>(null);
diff --git a/maven-core/src/test/java/org/apache/maven/project/TestMetadataSource.java b/maven-core/src/test/java/org/apache/maven/project/TestMetadataSource.java
index 9049f08b1137..e2f2e0c8d90d 100644
--- a/maven-core/src/test/java/org/apache/maven/project/TestMetadataSource.java
+++ b/maven-core/src/test/java/org/apache/maven/project/TestMetadataSource.java
@@ -18,18 +18,20 @@
*/
package org.apache.maven.project;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.List;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
-import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
import org.apache.maven.artifact.metadata.ResolutionGroup;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.project.artifact.MavenMetadataSource;
-import org.codehaus.plexus.component.annotations.Component;
@SuppressWarnings("deprecation")
-@Component(role = ArtifactMetadataSource.class, hint = "classpath")
+@Singleton
+@Named("classpath")
public class TestMetadataSource extends MavenMetadataSource {
@Override
public ResolutionGroup retrieve(
diff --git a/maven-core/src/test/java/org/apache/maven/repository/LegacyRepositoryLayout.java b/maven-core/src/test/java/org/apache/maven/repository/LegacyRepositoryLayout.java
index a6ed03d948f8..71296aa48e45 100644
--- a/maven-core/src/test/java/org/apache/maven/repository/LegacyRepositoryLayout.java
+++ b/maven-core/src/test/java/org/apache/maven/repository/LegacyRepositoryLayout.java
@@ -18,17 +18,20 @@
*/
package org.apache.maven.repository;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.artifact.metadata.ArtifactMetadata;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
-import org.codehaus.plexus.component.annotations.Component;
/**
* @author jdcasey
*/
-@Component(role = ArtifactRepositoryLayout.class, hint = "legacy")
+@Singleton
+@Named("legacy")
public class LegacyRepositoryLayout implements ArtifactRepositoryLayout {
private static final String PATH_SEPARATOR = "/";
diff --git a/maven-core/src/test/java/org/apache/maven/repository/TestRepositoryConnectorFactory.java b/maven-core/src/test/java/org/apache/maven/repository/TestRepositoryConnectorFactory.java
index d41771a17f26..bfcca5aa2ab9 100644
--- a/maven-core/src/test/java/org/apache/maven/repository/TestRepositoryConnectorFactory.java
+++ b/maven-core/src/test/java/org/apache/maven/repository/TestRepositoryConnectorFactory.java
@@ -18,7 +18,9 @@
*/
package org.apache.maven.repository;
-import org.codehaus.plexus.component.annotations.Component;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.repository.RemoteRepository;
import org.eclipse.aether.spi.connector.RepositoryConnector;
@@ -28,7 +30,8 @@
/**
* @author Benjamin Bentmann
*/
-@Component(role = RepositoryConnectorFactory.class, hint = "test")
+@Singleton
+@Named("test")
public class TestRepositoryConnectorFactory implements RepositoryConnectorFactory {
public RepositoryConnector newInstance(RepositorySystemSession session, RemoteRepository repository)
diff --git a/maven-core/src/test/java/org/apache/maven/repository/TestRepositorySystem.java b/maven-core/src/test/java/org/apache/maven/repository/TestRepositorySystem.java
index ef730e4f1a38..8f414827f77f 100644
--- a/maven-core/src/test/java/org/apache/maven/repository/TestRepositorySystem.java
+++ b/maven-core/src/test/java/org/apache/maven/repository/TestRepositorySystem.java
@@ -18,6 +18,10 @@
*/
package org.apache.maven.repository;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
@@ -47,8 +51,6 @@
import org.apache.maven.settings.Mirror;
import org.apache.maven.settings.Proxy;
import org.apache.maven.settings.Server;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.util.FileUtils;
import org.codehaus.plexus.util.StringUtils;
import org.eclipse.aether.RepositorySystemSession;
@@ -56,13 +58,14 @@
/**
* @author Benjamin Bentmann
*/
-@Component(role = RepositorySystem.class)
+@Singleton
+@Named
public class TestRepositorySystem implements RepositorySystem {
- @Requirement
+ @Inject
private ModelReader modelReader;
- @Requirement
+ @Inject
private ArtifactFactory artifactFactory;
public ArtifactRepository buildArtifactRepository(Repository repository) throws InvalidRepositoryException {
diff --git a/maven-model-builder/pom.xml b/maven-model-builder/pom.xml
index c0ff1dd2d266..0f3e34f3261a 100644
--- a/maven-model-builder/pom.xml
+++ b/maven-model-builder/pom.xml
@@ -111,10 +111,6 @@ under the License.
-
- org.codehaus.plexus
- plexus-component-metadata
-
org.eclipse.sisu
sisu-maven-plugin
diff --git a/maven-plugin-api/pom.xml b/maven-plugin-api/pom.xml
index da17be392696..42c2661a7012 100644
--- a/maven-plugin-api/pom.xml
+++ b/maven-plugin-api/pom.xml
@@ -39,12 +39,6 @@ under the License.
org.apache.maven
maven-artifact
-
-
- org.apache.maven.wagon
- wagon-provider-api
-
-
org.eclipse.sisu