From 6fb51a2d9969527d9ad1ca4a0fa7b0d0d80138b4 Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Thu, 9 Apr 2026 16:32:14 +0200 Subject: [PATCH 01/15] Feat: Migrate from Plexus DI to JSR330 --- maven-core/pom.xml | 4 -- .../java/org/apache/maven/DefaultMaven.java | 28 +++++++------ .../DefaultProjectDependenciesResolver.java | 13 +++--- .../factory/DefaultArtifactFactory.java | 11 +++-- .../handler/DefaultArtifactHandler.java | 6 ++- .../DefaultArtifactHandlerManager.java | 11 +++-- .../layout/DefaultRepositoryLayout.java | 7 +++- .../metadata/io/DefaultMetadataReader.java | 7 +++- .../DefaultResolutionErrorHandler.java | 8 ++-- .../maven/bridge/MavenRepositorySystem.java | 13 +++--- .../internal/DefaultBeanConfigurator.java | 7 +++- .../eventspy/internal/EventSpyDispatcher.java | 13 +++--- .../exception/DefaultExceptionHandler.java | 7 +++- .../maven/graph/DefaultGraphBuilder.java | 13 +++--- .../lifecycle/DefaultLifecycleExecutor.java | 23 ++++++----- .../maven/lifecycle/DefaultLifecycles.java | 13 +++--- .../internal/BuildListCalculator.java | 7 +++- .../DefaultExecutionEventCatapult.java | 7 +++- ...faultLifecycleExecutionPlanCalculator.java | 25 +++++++----- .../DefaultLifecycleMappingDelegate.java | 12 ++++-- .../DefaultLifecyclePluginAnalyzer.java | 15 ++++--- ...DefaultLifecycleTaskSegmentCalculator.java | 13 +++--- .../DefaultMojoExecutionConfigurator.java | 11 +++-- .../internal/LifecycleDebugLogger.java | 11 +++-- .../internal/LifecycleModuleBuilder.java | 19 +++++---- .../internal/LifecyclePluginResolver.java | 11 +++-- .../lifecycle/internal/LifecycleStarter.java | 25 +++++++----- .../internal/MojoDescriptorCreator.java | 19 +++++---- .../lifecycle/internal/MojoExecutor.java | 21 +++++----- .../internal/builder/BuilderCommon.java | 17 ++++---- .../multithreaded/MultiThreadedBuilder.java | 13 +++--- .../singlethreaded/SingleThreadedBuilder.java | 11 +++-- .../DefaultLifecycleBindingsInjector.java | 11 +++-- .../plugin/DefaultBuildPluginManager.java | 19 +++++---- .../plugin/DefaultExtensionRealmCache.java | 12 ++++-- .../plugin/DefaultPluginArtifactsCache.java | 7 +++- .../plugin/DefaultPluginDescriptorCache.java | 7 +++- .../maven/plugin/DefaultPluginRealmCache.java | 12 ++++-- .../plugin/internal/DefaultLegacySupport.java | 7 +++- .../internal/DefaultMavenPluginManager.java | 37 +++++++++-------- .../DefaultPluginDependenciesResolver.java | 15 ++++--- .../plugin/internal/DefaultPluginManager.java | 19 +++++---- .../internal/DefaultPluginPrefixResolver.java | 17 ++++---- .../DefaultPluginVersionResolver.java | 17 ++++---- .../project/DefaultMavenProjectHelper.java | 11 +++-- .../maven/project/DefaultProjectBuilder.java | 27 +++++++------ .../project/DefaultProjectBuildingHelper.java | 21 +++++----- .../DefaultProjectDependenciesResolver.java | 15 ++++--- .../project/DefaultProjectRealmCache.java | 13 +++--- .../artifact/DefaultMavenMetadataCache.java | 7 +++- .../artifact/DefaultMetadataSource.java | 7 ++-- .../DefaultProjectArtifactsCache.java | 7 +++- .../project/artifact/MavenMetadataSource.java | 40 ++++++------------- .../internal/DefaultRuntimeInformation.java | 11 +++-- .../settings/DefaultMavenSettingsBuilder.java | 11 +++-- .../toolchain/DefaultToolchainManager.java | 13 +++--- .../DefaultToolchainManagerPrivate.java | 7 +++- .../toolchain/DefaultToolchainsBuilder.java | 11 +++-- .../toolchain/java/JavaToolchainFactory.java | 11 +++-- maven-model-builder/pom.xml | 4 -- maven-plugin-api/pom.xml | 6 --- 61 files changed, 482 insertions(+), 341 deletions(-) diff --git a/maven-core/pom.xml b/maven-core/pom.xml index 6867da4a0347..2f28290103ce 100644 --- a/maven-core/pom.xml +++ b/maven-core/pom.xml @@ -192,10 +192,6 @@ under the License. - - org.codehaus.plexus - plexus-component-metadata - org.eclipse.sisu sisu-maven-plugin diff --git a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java index f204586bebc0..04406b3122a7 100644 --- a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java +++ b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java @@ -18,6 +18,10 @@ */ package org.apache.maven; +import javax.inject.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + import java.io.File; import java.util.ArrayList; import java.util.Arrays; @@ -52,8 +56,6 @@ import org.apache.maven.repository.LocalRepositoryNotAccessibleException; import org.apache.maven.session.scope.internal.SessionScope; 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.DefaultRepositorySystemSession; @@ -63,34 +65,36 @@ /** * @author Jason van Zyl */ -@Component(role = Maven.class) +@Singleton +@Named public class DefaultMaven implements Maven { - @Requirement + @Inject private Logger logger; - @Requirement + @Inject protected ProjectBuilder projectBuilder; - @Requirement + @Inject private LifecycleStarter lifecycleStarter; - @Requirement + @Inject protected PlexusContainer container; - @Requirement + @Inject private ExecutionEventCatapult eventCatapult; - @Requirement + @Inject private LegacySupport legacySupport; - @Requirement + @Inject private SessionScope sessionScope; - @Requirement + @Inject private DefaultRepositorySystemSessionFactory repositorySessionFactory; - @Requirement(hint = GraphBuilder.HINT) + @Inject + @Named(GraphBuilder.HINT) private GraphBuilder graphBuilder; @Override diff --git a/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java b/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java index f4425d6d7cb4..9fabccc5faaa 100644 --- a/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java +++ b/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java @@ -18,6 +18,10 @@ */ package org.apache.maven; +import javax.inject.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + import java.util.Collection; import java.util.Collections; import java.util.HashSet; @@ -38,8 +42,6 @@ import org.apache.maven.project.MavenProject; import org.apache.maven.project.artifact.ProjectArtifact; import org.apache.maven.repository.RepositorySystem; -import org.codehaus.plexus.component.annotations.Component; -import org.codehaus.plexus.component.annotations.Requirement; /** * @deprecated As of 3.2.2, and there is no direct replacement. This is an internal class which was not marked as such, @@ -47,13 +49,14 @@ * */ @Deprecated -@Component(role = ProjectDependenciesResolver.class) +@Singleton +@Named public class DefaultProjectDependenciesResolver implements ProjectDependenciesResolver { - @Requirement + @Inject private RepositorySystem repositorySystem; - @Requirement + @Inject private ResolutionErrorHandler resolutionErrorHandler; public Set resolve(MavenProject project, Collection scopesToResolve, MavenSession session) diff --git a/maven-core/src/main/java/org/apache/maven/artifact/factory/DefaultArtifactFactory.java b/maven-core/src/main/java/org/apache/maven/artifact/factory/DefaultArtifactFactory.java index f2e1706ba3cb..dba77af6135f 100644 --- a/maven-core/src/main/java/org/apache/maven/artifact/factory/DefaultArtifactFactory.java +++ b/maven-core/src/main/java/org/apache/maven/artifact/factory/DefaultArtifactFactory.java @@ -18,22 +18,25 @@ */ package org.apache.maven.artifact.factory; +import javax.inject.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.DefaultArtifact; import org.apache.maven.artifact.handler.ArtifactHandler; import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager; import org.apache.maven.artifact.versioning.VersionRange; -import org.codehaus.plexus.component.annotations.Component; -import org.codehaus.plexus.component.annotations.Requirement; /** * DefaultArtifactFactory * */ -@Component(role = ArtifactFactory.class) +@Singleton +@Named @SuppressWarnings("checkstyle:parameternumber") public class DefaultArtifactFactory implements ArtifactFactory { - @Requirement + @Inject private ArtifactHandlerManager artifactHandlerManager; public Artifact createArtifact(String groupId, String artifactId, String version, String scope, String type) { diff --git a/maven-core/src/main/java/org/apache/maven/artifact/handler/DefaultArtifactHandler.java b/maven-core/src/main/java/org/apache/maven/artifact/handler/DefaultArtifactHandler.java index 1a71117db86c..976473ac7bfe 100644 --- a/maven-core/src/main/java/org/apache/maven/artifact/handler/DefaultArtifactHandler.java +++ b/maven-core/src/main/java/org/apache/maven/artifact/handler/DefaultArtifactHandler.java @@ -18,13 +18,15 @@ */ package org.apache.maven.artifact.handler; -import org.codehaus.plexus.component.annotations.Component; +import javax.inject.Named; +import javax.inject.Singleton; /** * @author Brett Porter * @author Jason van Zyl */ -@Component(role = ArtifactHandler.class) +@Singleton +@Named public class DefaultArtifactHandler implements ArtifactHandler { private String extension; diff --git a/maven-core/src/main/java/org/apache/maven/artifact/handler/manager/DefaultArtifactHandlerManager.java b/maven-core/src/main/java/org/apache/maven/artifact/handler/manager/DefaultArtifactHandlerManager.java index e7cbecb3e90a..a52e9edd76f3 100644 --- a/maven-core/src/main/java/org/apache/maven/artifact/handler/manager/DefaultArtifactHandlerManager.java +++ b/maven-core/src/main/java/org/apache/maven/artifact/handler/manager/DefaultArtifactHandlerManager.java @@ -18,22 +18,25 @@ */ package org.apache.maven.artifact.handler.manager; +import javax.inject.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import org.apache.maven.artifact.handler.ArtifactHandler; import org.apache.maven.artifact.handler.DefaultArtifactHandler; -import org.codehaus.plexus.component.annotations.Component; -import org.codehaus.plexus.component.annotations.Requirement; /** * @author Jason van Zyl */ -@Component(role = ArtifactHandlerManager.class) +@Singleton +@Named public class DefaultArtifactHandlerManager implements ArtifactHandlerManager { - @Requirement(role = ArtifactHandler.class) + @Inject private Map artifactHandlers; private Map allHandlers = new ConcurrentHashMap<>(); diff --git a/maven-core/src/main/java/org/apache/maven/artifact/repository/layout/DefaultRepositoryLayout.java b/maven-core/src/main/java/org/apache/maven/artifact/repository/layout/DefaultRepositoryLayout.java index 3d50bb1a6c50..d655700b7934 100644 --- a/maven-core/src/main/java/org/apache/maven/artifact/repository/layout/DefaultRepositoryLayout.java +++ b/maven-core/src/main/java/org/apache/maven/artifact/repository/layout/DefaultRepositoryLayout.java @@ -18,16 +18,19 @@ */ package org.apache.maven.artifact.repository.layout; +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.codehaus.plexus.component.annotations.Component; /** * @author jdcasey */ -@Component(role = ArtifactRepositoryLayout.class, hint = "default") +@Singleton +@Named public class DefaultRepositoryLayout implements ArtifactRepositoryLayout { private static final char PATH_SEPARATOR = '/'; diff --git a/maven-core/src/main/java/org/apache/maven/artifact/repository/metadata/io/DefaultMetadataReader.java b/maven-core/src/main/java/org/apache/maven/artifact/repository/metadata/io/DefaultMetadataReader.java index 7ef68e334aa6..9ecc7c6dac74 100644 --- a/maven-core/src/main/java/org/apache/maven/artifact/repository/metadata/io/DefaultMetadataReader.java +++ b/maven-core/src/main/java/org/apache/maven/artifact/repository/metadata/io/DefaultMetadataReader.java @@ -18,6 +18,9 @@ */ package org.apache.maven.artifact.repository.metadata.io; +import javax.inject.Named; +import javax.inject.Singleton; + import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -27,7 +30,6 @@ import org.apache.maven.artifact.repository.metadata.Metadata; import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader; -import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.util.ReaderFactory; import org.codehaus.plexus.util.xml.pull.XmlPullParserException; @@ -36,7 +38,8 @@ * * @author Benjamin Bentmann */ -@Component(role = MetadataReader.class) +@Singleton +@Named public class DefaultMetadataReader implements MetadataReader { public Metadata read(File input, Map options) throws IOException { diff --git a/maven-core/src/main/java/org/apache/maven/artifact/resolver/DefaultResolutionErrorHandler.java b/maven-core/src/main/java/org/apache/maven/artifact/resolver/DefaultResolutionErrorHandler.java index ca7c9f774b35..576a2c1808ad 100644 --- a/maven-core/src/main/java/org/apache/maven/artifact/resolver/DefaultResolutionErrorHandler.java +++ b/maven-core/src/main/java/org/apache/maven/artifact/resolver/DefaultResolutionErrorHandler.java @@ -18,16 +18,18 @@ */ package org.apache.maven.artifact.resolver; +import javax.inject.Named; +import javax.inject.Singleton; + import java.util.ArrayList; import java.util.Collection; import java.util.List; -import org.codehaus.plexus.component.annotations.Component; - /** * @author Benjamin Bentmann */ -@Component(role = ResolutionErrorHandler.class) +@Singleton +@Named public class DefaultResolutionErrorHandler implements ResolutionErrorHandler { public void throwErrors(ArtifactResolutionRequest request, ArtifactResolutionResult result) diff --git a/maven-core/src/main/java/org/apache/maven/bridge/MavenRepositorySystem.java b/maven-core/src/main/java/org/apache/maven/bridge/MavenRepositorySystem.java index 59a1b0ca7091..4cc6c833910a 100644 --- a/maven-core/src/main/java/org/apache/maven/bridge/MavenRepositorySystem.java +++ b/maven-core/src/main/java/org/apache/maven/bridge/MavenRepositorySystem.java @@ -18,6 +18,10 @@ */ package org.apache.maven.bridge; +import javax.inject.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + import java.io.File; import java.net.MalformedURLException; import java.net.URL; @@ -53,8 +57,6 @@ import org.apache.maven.repository.Proxy; import org.apache.maven.repository.RepositorySystem; import org.apache.maven.settings.Mirror; -import org.codehaus.plexus.component.annotations.Component; -import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.util.StringUtils; import org.eclipse.aether.RepositorySystemSession; import org.eclipse.aether.repository.AuthenticationContext; @@ -68,7 +70,8 @@ * @author Jason van Zyl * @since 3.2.3 */ -@Component(role = MavenRepositorySystem.class, hint = "default") +@Singleton +@Named("default") public class MavenRepositorySystem { // Singleton instance for static deprecated methods @@ -76,10 +79,10 @@ public class MavenRepositorySystem { private static final Logger LOGGER = LoggerFactory.getLogger(MavenRepositorySystem.class); - @Requirement + @Inject private ArtifactHandlerManager artifactHandlerManager; - @Requirement(role = ArtifactRepositoryLayout.class) + @Inject private Map layouts; MavenRepositorySystem() { diff --git a/maven-core/src/main/java/org/apache/maven/configuration/internal/DefaultBeanConfigurator.java b/maven-core/src/main/java/org/apache/maven/configuration/internal/DefaultBeanConfigurator.java index f53450921777..f485b1ec9aca 100644 --- a/maven-core/src/main/java/org/apache/maven/configuration/internal/DefaultBeanConfigurator.java +++ b/maven-core/src/main/java/org/apache/maven/configuration/internal/DefaultBeanConfigurator.java @@ -18,6 +18,9 @@ */ package org.apache.maven.configuration.internal; +import javax.inject.Named; +import javax.inject.Singleton; + import java.io.File; import java.util.Objects; @@ -26,7 +29,6 @@ import org.apache.maven.configuration.BeanConfigurationRequest; import org.apache.maven.configuration.BeanConfigurationValuePreprocessor; import org.apache.maven.configuration.BeanConfigurator; -import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.configurator.ComponentConfigurationException; import org.codehaus.plexus.component.configurator.converters.composite.ObjectWithFieldsConverter; import org.codehaus.plexus.component.configurator.converters.lookup.ConverterLookup; @@ -43,7 +45,8 @@ * * @author Benjamin Bentmann */ -@Component(role = BeanConfigurator.class) +@Singleton +@Named public class DefaultBeanConfigurator implements BeanConfigurator { private final ConverterLookup converterLookup = new DefaultConverterLookup(); diff --git a/maven-core/src/main/java/org/apache/maven/eventspy/internal/EventSpyDispatcher.java b/maven-core/src/main/java/org/apache/maven/eventspy/internal/EventSpyDispatcher.java index c552d107c287..c33382ab9bbd 100644 --- a/maven-core/src/main/java/org/apache/maven/eventspy/internal/EventSpyDispatcher.java +++ b/maven-core/src/main/java/org/apache/maven/eventspy/internal/EventSpyDispatcher.java @@ -18,13 +18,15 @@ */ package org.apache.maven.eventspy.internal; +import javax.inject.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + import java.util.ArrayList; import java.util.List; import org.apache.maven.eventspy.EventSpy; import org.apache.maven.execution.ExecutionListener; -import org.codehaus.plexus.component.annotations.Component; -import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.logging.Logger; import org.eclipse.aether.RepositoryListener; @@ -32,13 +34,14 @@ * Dispatches callbacks to all registered eventspies. * @since 3.0.2 */ -@Component(role = EventSpyDispatcher.class) +@Singleton +@Named public class EventSpyDispatcher { - @Requirement + @Inject private Logger logger; - @Requirement(role = EventSpy.class) + @Inject private List eventSpies; public void setEventSpies(List eventSpies) { diff --git a/maven-core/src/main/java/org/apache/maven/exception/DefaultExceptionHandler.java b/maven-core/src/main/java/org/apache/maven/exception/DefaultExceptionHandler.java index 997656b30f0d..6100ac46c0bc 100644 --- a/maven-core/src/main/java/org/apache/maven/exception/DefaultExceptionHandler.java +++ b/maven-core/src/main/java/org/apache/maven/exception/DefaultExceptionHandler.java @@ -18,6 +18,9 @@ */ package org.apache.maven.exception; +import javax.inject.Named; +import javax.inject.Singleton; + import java.io.IOException; import java.net.ConnectException; import java.net.UnknownHostException; @@ -37,7 +40,6 @@ import org.apache.maven.plugin.PluginExecutionException; import org.apache.maven.project.ProjectBuildingException; import org.apache.maven.project.ProjectBuildingResult; -import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.util.StringUtils; /* @@ -88,7 +90,8 @@ /** * Transform an exception into useful end-user message. */ -@Component(role = ExceptionHandler.class) +@Singleton +@Named public class DefaultExceptionHandler implements ExceptionHandler { @Override public ExceptionSummary handleException(Throwable exception) { diff --git a/maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java b/maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java index 67fad2b6a603..10fdac3e4cdb 100644 --- a/maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java +++ b/maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java @@ -18,6 +18,10 @@ */ package org.apache.maven.graph; +import javax.inject.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + import java.io.File; import java.util.ArrayList; import java.util.Arrays; @@ -49,8 +53,6 @@ import org.apache.maven.project.ProjectBuildingException; import org.apache.maven.project.ProjectBuildingRequest; import org.apache.maven.project.ProjectBuildingResult; -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.codehaus.plexus.util.dag.CycleDetectedException; @@ -58,13 +60,14 @@ /** * Builds the {@link ProjectDependencyGraph inter-dependencies graph} between projects in the reactor. */ -@Component(role = GraphBuilder.class, hint = GraphBuilder.HINT) +@Singleton +@Named(GraphBuilder.HINT) public class DefaultGraphBuilder implements GraphBuilder { - @Requirement + @Inject private Logger logger; - @Requirement + @Inject protected ProjectBuilder projectBuilder; @Override diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java b/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java index 97fe2ef1ddbb..42961b652a59 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java @@ -18,6 +18,10 @@ */ package org.apache.maven.lifecycle; +import javax.inject.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + import java.util.Arrays; import java.util.List; import java.util.Map; @@ -43,8 +47,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; /** * A facade that provides lifecycle services to components outside maven core. @@ -55,32 +57,33 @@ * @author Benjamin Bentmann * @author Kristian Rosenvold */ -@Component(role = LifecycleExecutor.class) +@Singleton +@Named public class DefaultLifecycleExecutor implements LifecycleExecutor { - @Requirement + @Inject private LifeCyclePluginAnalyzer lifeCyclePluginAnalyzer; - @Requirement + @Inject private DefaultLifecycles defaultLifeCycles; - @Requirement + @Inject private LifecycleTaskSegmentCalculator lifecycleTaskSegmentCalculator; - @Requirement + @Inject private LifecycleExecutionPlanCalculator lifecycleExecutionPlanCalculator; - @Requirement + @Inject private MojoExecutor mojoExecutor; - @Requirement + @Inject private LifecycleStarter lifecycleStarter; public void execute(MavenSession session) { lifecycleStarter.execute(session); } - @Requirement + @Inject private MojoDescriptorCreator mojoDescriptorCreator; // These methods deal with construction intact Plugin object that look like they come from a standard diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycles.java b/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycles.java index 2e20aa04c8f5..0c039af29afa 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycles.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycles.java @@ -18,6 +18,10 @@ */ package org.apache.maven.lifecycle; +import javax.inject.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -27,8 +31,6 @@ import java.util.Map; import java.util.Set; -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; @@ -39,16 +41,17 @@ */ // TODO The configuration for the lifecycle needs to be externalized so that I can use the annotations properly for the // wiring and reference and external source for the lifecycle configuration. -@Component(role = DefaultLifecycles.class) +@Singleton +@Named public class DefaultLifecycles { public static final String[] STANDARD_LIFECYCLES = {"clean", "default", "site"}; // @Configuration(source="org/apache/maven/lifecycle/lifecycles.xml") - @Requirement(role = Lifecycle.class) + @Inject private Map lifecycles; - @Requirement + @Inject private Logger logger; public DefaultLifecycles() {} diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/BuildListCalculator.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/BuildListCalculator.java index 92a6adaf5f02..d94380fe4457 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/BuildListCalculator.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/BuildListCalculator.java @@ -18,6 +18,9 @@ */ package org.apache.maven.lifecycle.internal; +import javax.inject.Named; +import javax.inject.Singleton; + import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -25,7 +28,6 @@ import org.apache.maven.execution.MavenSession; import org.apache.maven.lifecycle.internal.builder.BuilderCommon; import org.apache.maven.project.MavenProject; -import org.codehaus.plexus.component.annotations.Component; /** * NOTE: This class is not part of any public api and can be changed or deleted without prior notice. @@ -33,7 +35,8 @@ * @since 3.0 * @author Kristian Rosenvold */ -@Component(role = BuildListCalculator.class) +@Singleton +@Named public class BuildListCalculator { public ProjectBuildList calculateProjectBuilds(MavenSession session, List taskSegments) { List projectBuilds = new ArrayList<>(); diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultExecutionEventCatapult.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultExecutionEventCatapult.java index 5ccae9a380c6..dad6c3412030 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultExecutionEventCatapult.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultExecutionEventCatapult.java @@ -18,11 +18,13 @@ */ package org.apache.maven.lifecycle.internal; +import javax.inject.Named; +import javax.inject.Singleton; + import org.apache.maven.execution.ExecutionEvent; import org.apache.maven.execution.ExecutionListener; import org.apache.maven.execution.MavenSession; import org.apache.maven.plugin.MojoExecution; -import org.codehaus.plexus.component.annotations.Component; /** * Assists in firing execution events. Warning: This is an internal utility class that is only public @@ -31,7 +33,8 @@ * * @author Benjamin Bentmann */ -@Component(role = ExecutionEventCatapult.class) +@Singleton +@Named public class DefaultExecutionEventCatapult implements ExecutionEventCatapult { public void fire(ExecutionEvent.Type eventType, MavenSession session, MojoExecution mojoExecution) { diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleExecutionPlanCalculator.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleExecutionPlanCalculator.java index 62241fa16f9a..46dc56df269b 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleExecutionPlanCalculator.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleExecutionPlanCalculator.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.io.IOException; import java.util.ArrayList; import java.util.Arrays; @@ -52,8 +56,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; import org.codehaus.plexus.util.StringUtils; import org.codehaus.plexus.util.xml.Xpp3Dom; import org.codehaus.plexus.util.xml.pull.XmlPullParserException; @@ -65,30 +67,31 @@ * @author Benjamin Bentmann * @author Kristian Rosenvold (Extract class) */ -@Component(role = LifecycleExecutionPlanCalculator.class) +@Singleton +@Named public class DefaultLifecycleExecutionPlanCalculator implements LifecycleExecutionPlanCalculator { - @Requirement + @Inject private PluginVersionResolver pluginVersionResolver; - @Requirement + @Inject private BuildPluginManager pluginManager; - @Requirement + @Inject private DefaultLifecycles defaultLifeCycles; - @Requirement + @Inject private MojoDescriptorCreator mojoDescriptorCreator; - @Requirement + @Inject private LifecyclePluginResolver lifecyclePluginResolver; - @Requirement(hint = DefaultLifecycleMappingDelegate.HINT) + @Inject private LifecycleMappingDelegate standardDelegate; - @Requirement + @Inject private Map delegates; - @Requirement + @Inject private Map mojoExecutionConfigurators; @SuppressWarnings({"UnusedDeclaration"}) diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleMappingDelegate.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleMappingDelegate.java index 860fb27d0017..109307ebe701 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleMappingDelegate.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleMappingDelegate.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.LinkedHashMap; import java.util.List; @@ -38,19 +42,19 @@ import org.apache.maven.plugin.PluginResolutionException; 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; /** * Lifecycle mapping delegate component interface. Calculates project build execution plan given {@link Lifecycle} and * lifecycle phase. Standard lifecycles use plugin execution {@code } or mojo default lifecycle phase to * calculate the execution plan, but custom lifecycles can use alternative mapping strategies. */ -@Component(role = LifecycleMappingDelegate.class, hint = DefaultLifecycleMappingDelegate.HINT) +@Singleton +@Named public class DefaultLifecycleMappingDelegate implements LifecycleMappingDelegate { + @Deprecated public static final String HINT = "default"; - @Requirement + @Inject private BuildPluginManager pluginManager; public Map> calculateLifecycleMappings( diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecyclePluginAnalyzer.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecyclePluginAnalyzer.java index 21f99e52a29d..e97ef18b25d8 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecyclePluginAnalyzer.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecyclePluginAnalyzer.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.LinkedHashMap; import java.util.List; @@ -34,8 +38,6 @@ import org.apache.maven.model.InputSource; import org.apache.maven.model.Plugin; import org.apache.maven.model.PluginExecution; -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.codehaus.plexus.util.xml.Xpp3Dom; @@ -49,16 +51,17 @@ * @author jdcasey * @author Kristian Rosenvold (extracted class only) */ -@Component(role = LifeCyclePluginAnalyzer.class) +@Singleton +@Named public class DefaultLifecyclePluginAnalyzer implements LifeCyclePluginAnalyzer { - @Requirement(role = LifecycleMapping.class) + @Inject private Map lifecycleMappings; - @Requirement + @Inject private DefaultLifecycles defaultLifeCycles; - @Requirement + @Inject private Logger logger; public DefaultLifecyclePluginAnalyzer() {} 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..9a00e4499f7d 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,22 +47,23 @@ * @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 + // TODO this tricks plexus-component-metadata generate required metadata + @Inject private List projectExecutionListeners; public void setProjectExecutionListeners(final List 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..85997d13788c 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,8 +34,6 @@ 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; /** @@ -41,30 +43,31 @@ * @author Benjamin Bentmann * @author Kristian Rosenvold */ -@Component(role = LifecycleStarter.class) +@Singleton +@Named public class LifecycleStarter { - @Requirement + @Inject private ExecutionEventCatapult eventCatapult; - @Requirement + @Inject private DefaultLifecycles defaultLifeCycles; - @Requirement + @Inject 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..25f4632cf061 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,8 +45,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; import org.codehaus.plexus.configuration.PlexusConfiguration; import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.util.xml.Xpp3Dom; @@ -59,22 +61,23 @@ * @author jdcasey * @author Kristian Rosenvold (extracted class only) */ -@Component(role = MojoDescriptorCreator.class) +@Singleton +@Named public class MojoDescriptorCreator { - @Requirement + @Inject 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..090a3c1938f8 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,8 +44,6 @@ 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; /** @@ -58,13 +60,14 @@ * 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 + @Inject private Logger logger; - @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/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..cbf54b56f39d 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,22 +44,23 @@ /** * 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) + // TODO this tricks plexus-component-metadata generate required metadata + @Inject private List mojoExecutionListeners; public void setMojoExecutionListeners(final List 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..4891941b86ef 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,8 +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; @@ -69,18 +71,19 @@ * @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 + @Inject private Logger logger; - @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..526d935fc6d9 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,8 +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; @@ -63,21 +65,22 @@ * @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 + @Inject private Logger logger; - @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..535de82ad6db 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,8 +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; @@ -69,23 +71,24 @@ * @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 + @Inject private Logger logger; - @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..440ae9159db0 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,16 @@ 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; /** * DefaultMavenProjectHelper */ @SuppressWarnings("deprecation") -@Component(role = MavenProjectHelper.class) +@Singleton +@Named public class DefaultMavenProjectHelper extends AbstractLogEnabled implements MavenProjectHelper { - @Requirement + @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..6fbccc660e2d 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,8 +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; @@ -81,37 +83,38 @@ /** * 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 + @Inject private Logger logger; - @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..d92fad71f06a 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,8 +50,6 @@ 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; @@ -59,25 +61,26 @@ * * @author Benjamin Bentmann */ -@Component(role = ProjectBuildingHelper.class) +@Singleton +@Named public class DefaultProjectBuildingHelper implements ProjectBuildingHelper { - @Requirement + @Inject private Logger logger; - @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..aec577d563b9 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,8 +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; @@ -53,16 +55,17 @@ /** * @author Benjamin Bentmann */ -@Component(role = ProjectDependenciesResolver.class) +@Singleton +@Named public class DefaultProjectDependenciesResolver implements ProjectDependenciesResolver { - @Requirement + @Inject private Logger logger; - @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..5a48b43e1b67 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,9 @@ */ package org.apache.maven.project.artifact; +import javax.inject.Inject; +import javax.inject.Provider; + import java.io.File; import java.util.ArrayList; import java.util.Arrays; @@ -77,10 +80,6 @@ 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; @@ -90,31 +89,26 @@ /** * @author Jason van Zyl */ -@Component(role = ArtifactMetadataSource.class, hint = "maven") public class MavenMetadataSource implements ArtifactMetadataSource { - @Requirement + @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; + @Inject + private Provider projectBuilderProvider; - @Requirement + @Inject private Logger logger; - @Requirement + @Inject private MavenMetadataCache cache; - @Requirement + @Inject private LegacySupport legacySupport; private void injectSession(MetadataResolutionRequest request) { @@ -513,17 +507,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..7b3bf179fa61 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,14 +18,16 @@ */ package org.apache.maven.rtinfo.internal; +import javax.inject.Inject; +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; @@ -36,10 +38,11 @@ /** * Provides information about the current Maven runtime. */ -@Component(role = RuntimeInformation.class) +@Singleton +@Named public class DefaultRuntimeInformation implements RuntimeInformation { - @Requirement + @Inject private Logger logger; 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..d1c0401eb2f0 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,8 +31,6 @@ 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; @@ -36,10 +38,11 @@ /** * @author jdcasey */ -@Component(role = MavenSettingsBuilder.class) +@Singleton +@Named public class DefaultMavenSettingsBuilder extends AbstractLogEnabled implements MavenSettingsBuilder { - @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-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 From 1ec7b98c3bbea7538d74bea6a20745e1a82d1c59 Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Thu, 9 Apr 2026 16:41:15 +0200 Subject: [PATCH 02/15] Migrate tests, migrate artifact handlers --- .../artifact/handler/ArtifactHandlerImpl.java | 106 ++++++++++ .../DefaultArtifactHandlerManager.java | 8 +- .../handler/types/EarArtifactHandler.java | 48 +++++ .../handler/types/EjbArtifactHandler.java | 49 +++++ .../types/EjbClientArtifactHandler.java | 49 +++++ .../handler/types/FatJarArtifactHandler.java | 48 +++++ .../handler/types/JarArtifactHandler.java | 48 +++++ .../types/JavaSourceArtifactHandler.java | 49 +++++ .../handler/types/JavadocArtifactHandler.java | 49 +++++ .../types/MavenPluginArtifactHandler.java | 49 +++++ .../handler/types/PomArtifactHandler.java | 48 +++++ .../handler/types/RarArtifactHandler.java | 48 +++++ .../handler/types/TestJarArtifactHandler.java | 49 +++++ .../handler/types/WarArtifactHandler.java | 48 +++++ .../META-INF/plexus/artifact-handlers.xml | 194 ------------------ .../org/apache/maven/DefaultMavenTest.java | 6 +- .../maven/project/TestMetadataSource.java | 8 +- .../repository/LegacyRepositoryLayout.java | 7 +- .../TestRepositoryConnectorFactory.java | 7 +- .../repository/TestRepositorySystem.java | 13 +- 20 files changed, 721 insertions(+), 210 deletions(-) create mode 100644 maven-core/src/main/java/org/apache/maven/artifact/handler/ArtifactHandlerImpl.java create mode 100644 maven-core/src/main/java/org/apache/maven/artifact/handler/types/EarArtifactHandler.java create mode 100644 maven-core/src/main/java/org/apache/maven/artifact/handler/types/EjbArtifactHandler.java create mode 100644 maven-core/src/main/java/org/apache/maven/artifact/handler/types/EjbClientArtifactHandler.java create mode 100644 maven-core/src/main/java/org/apache/maven/artifact/handler/types/FatJarArtifactHandler.java create mode 100644 maven-core/src/main/java/org/apache/maven/artifact/handler/types/JarArtifactHandler.java create mode 100644 maven-core/src/main/java/org/apache/maven/artifact/handler/types/JavaSourceArtifactHandler.java create mode 100644 maven-core/src/main/java/org/apache/maven/artifact/handler/types/JavadocArtifactHandler.java create mode 100644 maven-core/src/main/java/org/apache/maven/artifact/handler/types/MavenPluginArtifactHandler.java create mode 100644 maven-core/src/main/java/org/apache/maven/artifact/handler/types/PomArtifactHandler.java create mode 100644 maven-core/src/main/java/org/apache/maven/artifact/handler/types/RarArtifactHandler.java create mode 100644 maven-core/src/main/java/org/apache/maven/artifact/handler/types/TestJarArtifactHandler.java create mode 100644 maven-core/src/main/java/org/apache/maven/artifact/handler/types/WarArtifactHandler.java delete mode 100644 maven-core/src/main/resources/META-INF/plexus/artifact-handlers.xml diff --git a/maven-core/src/main/java/org/apache/maven/artifact/handler/ArtifactHandlerImpl.java b/maven-core/src/main/java/org/apache/maven/artifact/handler/ArtifactHandlerImpl.java new file mode 100644 index 000000000000..6edcafc8d4de --- /dev/null +++ b/maven-core/src/main/java/org/apache/maven/artifact/handler/ArtifactHandlerImpl.java @@ -0,0 +1,106 @@ +/* + * 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.artifact.handler; + +import static java.util.Objects.requireNonNull; + +/** + * @author Brett Porter + * @author Jason van Zyl + * + * @since 3.10.0 + */ +public final class ArtifactHandlerImpl implements ArtifactHandler { + public static final String LANGUAGE_NONE = "none"; + public static final String LANGUAGE_JAVA = "java"; + + private final String type; + private final String extension; + private final String classifier; + private final String packaging; + private final boolean includesDependencies; + private final String language; + private final boolean addedToClasspath; + + public ArtifactHandlerImpl( + String type, + String extension, + String classifier, + String packaging, + boolean includesDependencies, + String language, + boolean addedToClasspath) { + this.type = requireNonNull(type); + this.extension = extension; + this.classifier = classifier; + this.packaging = packaging; + this.includesDependencies = includesDependencies; + this.language = language; + this.addedToClasspath = addedToClasspath; + } + + public String getType() { + return type; + } + + @Override + public String getExtension() { + if (extension == null) { + return getType(); + } + return extension; + } + + @Override + public String getClassifier() { + return classifier; + } + + @Deprecated + @Override + public String getDirectory() { + return getPackaging() + "s"; + } + + @Override + public String getPackaging() { + if (packaging == null) { + return getType(); + } + return packaging; + } + + @Override + public boolean isIncludesDependencies() { + return includesDependencies; + } + + @Override + public String getLanguage() { + if (language == null) { + return LANGUAGE_NONE; + } + return language; + } + + @Override + public boolean isAddedToClasspath() { + return addedToClasspath; + } +} diff --git a/maven-core/src/main/java/org/apache/maven/artifact/handler/manager/DefaultArtifactHandlerManager.java b/maven-core/src/main/java/org/apache/maven/artifact/handler/manager/DefaultArtifactHandlerManager.java index a52e9edd76f3..c6c9074414d2 100644 --- a/maven-core/src/main/java/org/apache/maven/artifact/handler/manager/DefaultArtifactHandlerManager.java +++ b/maven-core/src/main/java/org/apache/maven/artifact/handler/manager/DefaultArtifactHandlerManager.java @@ -36,11 +36,15 @@ @Named public class DefaultArtifactHandlerManager implements ArtifactHandlerManager { - @Inject - private Map artifactHandlers; + private final Map artifactHandlers; private Map allHandlers = new ConcurrentHashMap<>(); + @Inject + public DefaultArtifactHandlerManager(Map artifactHandlers) { + this.artifactHandlers = artifactHandlers; + } + public ArtifactHandler getArtifactHandler(String type) { ArtifactHandler handler = allHandlers.get(type); diff --git a/maven-core/src/main/java/org/apache/maven/artifact/handler/types/EarArtifactHandler.java b/maven-core/src/main/java/org/apache/maven/artifact/handler/types/EarArtifactHandler.java new file mode 100644 index 000000000000..98fd12f5f908 --- /dev/null +++ b/maven-core/src/main/java/org/apache/maven/artifact/handler/types/EarArtifactHandler.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.artifact.handler.types; + +import javax.inject.Named; +import javax.inject.Provider; +import javax.inject.Singleton; + +import org.apache.maven.artifact.handler.ArtifactHandler; +import org.apache.maven.artifact.handler.ArtifactHandlerImpl; + +/** + * EAR Artifact Handler. + * + * @since 3.10.0 + */ +@Singleton +@Named(EarArtifactHandler.NAME) +public final class EarArtifactHandler implements Provider { + public static final String NAME = "ear"; + + private final ArtifactHandler instance; + + public EarArtifactHandler() { + this.instance = new ArtifactHandlerImpl(NAME, null, null, null, true, ArtifactHandlerImpl.LANGUAGE_JAVA, false); + } + + @Override + public ArtifactHandler get() { + return instance; + } +} diff --git a/maven-core/src/main/java/org/apache/maven/artifact/handler/types/EjbArtifactHandler.java b/maven-core/src/main/java/org/apache/maven/artifact/handler/types/EjbArtifactHandler.java new file mode 100644 index 000000000000..82d83ec92b0f --- /dev/null +++ b/maven-core/src/main/java/org/apache/maven/artifact/handler/types/EjbArtifactHandler.java @@ -0,0 +1,49 @@ +/* + * 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.artifact.handler.types; + +import javax.inject.Named; +import javax.inject.Provider; +import javax.inject.Singleton; + +import org.apache.maven.artifact.handler.ArtifactHandler; +import org.apache.maven.artifact.handler.ArtifactHandlerImpl; + +/** + * EJB Artifact Handler. + * + * @since 3.10.0 + */ +@Singleton +@Named(EjbArtifactHandler.NAME) +public final class EjbArtifactHandler implements Provider { + public static final String NAME = "ejb"; + + private final ArtifactHandler instance; + + public EjbArtifactHandler() { + this.instance = + new ArtifactHandlerImpl(NAME, "jar", null, null, false, ArtifactHandlerImpl.LANGUAGE_JAVA, true); + } + + @Override + public ArtifactHandler get() { + return instance; + } +} diff --git a/maven-core/src/main/java/org/apache/maven/artifact/handler/types/EjbClientArtifactHandler.java b/maven-core/src/main/java/org/apache/maven/artifact/handler/types/EjbClientArtifactHandler.java new file mode 100644 index 000000000000..4248a8143e12 --- /dev/null +++ b/maven-core/src/main/java/org/apache/maven/artifact/handler/types/EjbClientArtifactHandler.java @@ -0,0 +1,49 @@ +/* + * 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.artifact.handler.types; + +import javax.inject.Named; +import javax.inject.Provider; +import javax.inject.Singleton; + +import org.apache.maven.artifact.handler.ArtifactHandler; +import org.apache.maven.artifact.handler.ArtifactHandlerImpl; + +/** + * EJB Client Artifact Handler. + * + * @since 3.10.0 + */ +@Singleton +@Named(EjbClientArtifactHandler.NAME) +public final class EjbClientArtifactHandler implements Provider { + public static final String NAME = "ejb-client"; + + private final ArtifactHandler instance; + + public EjbClientArtifactHandler() { + this.instance = + new ArtifactHandlerImpl(NAME, "jar", "client", "ejb", false, ArtifactHandlerImpl.LANGUAGE_JAVA, true); + } + + @Override + public ArtifactHandler get() { + return instance; + } +} diff --git a/maven-core/src/main/java/org/apache/maven/artifact/handler/types/FatJarArtifactHandler.java b/maven-core/src/main/java/org/apache/maven/artifact/handler/types/FatJarArtifactHandler.java new file mode 100644 index 000000000000..b696acb9e2ed --- /dev/null +++ b/maven-core/src/main/java/org/apache/maven/artifact/handler/types/FatJarArtifactHandler.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.artifact.handler.types; + +import javax.inject.Named; +import javax.inject.Provider; +import javax.inject.Singleton; + +import org.apache.maven.artifact.handler.ArtifactHandler; +import org.apache.maven.artifact.handler.ArtifactHandlerImpl; + +/** + * Fat-JAR Artifact Handler. + * + * @since 3.10.0 + */ +@Singleton +@Named(FatJarArtifactHandler.NAME) +public final class FatJarArtifactHandler implements Provider { + public static final String NAME = "fatjar"; + + private final ArtifactHandler instance; + + public FatJarArtifactHandler() { + this.instance = new ArtifactHandlerImpl(NAME, "jar", null, null, true, ArtifactHandlerImpl.LANGUAGE_JAVA, true); + } + + @Override + public ArtifactHandler get() { + return instance; + } +} diff --git a/maven-core/src/main/java/org/apache/maven/artifact/handler/types/JarArtifactHandler.java b/maven-core/src/main/java/org/apache/maven/artifact/handler/types/JarArtifactHandler.java new file mode 100644 index 000000000000..298265420008 --- /dev/null +++ b/maven-core/src/main/java/org/apache/maven/artifact/handler/types/JarArtifactHandler.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.artifact.handler.types; + +import javax.inject.Named; +import javax.inject.Provider; +import javax.inject.Singleton; + +import org.apache.maven.artifact.handler.ArtifactHandler; +import org.apache.maven.artifact.handler.ArtifactHandlerImpl; + +/** + * JAR Artifact Handler. + * + * @since 3.10.0 + */ +@Singleton +@Named(JarArtifactHandler.NAME) +public final class JarArtifactHandler implements Provider { + public static final String NAME = "jar"; + + private final ArtifactHandler instance; + + public JarArtifactHandler() { + this.instance = new ArtifactHandlerImpl(NAME, null, null, null, false, ArtifactHandlerImpl.LANGUAGE_JAVA, true); + } + + @Override + public ArtifactHandler get() { + return instance; + } +} diff --git a/maven-core/src/main/java/org/apache/maven/artifact/handler/types/JavaSourceArtifactHandler.java b/maven-core/src/main/java/org/apache/maven/artifact/handler/types/JavaSourceArtifactHandler.java new file mode 100644 index 000000000000..0e3cbb56fe96 --- /dev/null +++ b/maven-core/src/main/java/org/apache/maven/artifact/handler/types/JavaSourceArtifactHandler.java @@ -0,0 +1,49 @@ +/* + * 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.artifact.handler.types; + +import javax.inject.Named; +import javax.inject.Provider; +import javax.inject.Singleton; + +import org.apache.maven.artifact.handler.ArtifactHandler; +import org.apache.maven.artifact.handler.ArtifactHandlerImpl; + +/** + * Sources JAR Artifact Handler. + * + * @since 3.10.0 + */ +@Singleton +@Named(JavaSourceArtifactHandler.NAME) +public final class JavaSourceArtifactHandler implements Provider { + public static final String NAME = "java-source"; + + private final ArtifactHandler instance; + + public JavaSourceArtifactHandler() { + this.instance = + new ArtifactHandlerImpl(NAME, "jar", "sources", null, false, ArtifactHandlerImpl.LANGUAGE_JAVA, false); + } + + @Override + public ArtifactHandler get() { + return instance; + } +} diff --git a/maven-core/src/main/java/org/apache/maven/artifact/handler/types/JavadocArtifactHandler.java b/maven-core/src/main/java/org/apache/maven/artifact/handler/types/JavadocArtifactHandler.java new file mode 100644 index 000000000000..a7a122fafec6 --- /dev/null +++ b/maven-core/src/main/java/org/apache/maven/artifact/handler/types/JavadocArtifactHandler.java @@ -0,0 +1,49 @@ +/* + * 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.artifact.handler.types; + +import javax.inject.Named; +import javax.inject.Provider; +import javax.inject.Singleton; + +import org.apache.maven.artifact.handler.ArtifactHandler; +import org.apache.maven.artifact.handler.ArtifactHandlerImpl; + +/** + * Javadoc JAR Artifact Handler. + * + * @since 3.10.0 + */ +@Singleton +@Named(JavadocArtifactHandler.NAME) +public final class JavadocArtifactHandler implements Provider { + public static final String NAME = "javadoc"; + + private final ArtifactHandler instance; + + public JavadocArtifactHandler() { + this.instance = + new ArtifactHandlerImpl(NAME, "jar", "javadoc", null, false, ArtifactHandlerImpl.LANGUAGE_JAVA, true); + } + + @Override + public ArtifactHandler get() { + return instance; + } +} diff --git a/maven-core/src/main/java/org/apache/maven/artifact/handler/types/MavenPluginArtifactHandler.java b/maven-core/src/main/java/org/apache/maven/artifact/handler/types/MavenPluginArtifactHandler.java new file mode 100644 index 000000000000..f4bd4174f90e --- /dev/null +++ b/maven-core/src/main/java/org/apache/maven/artifact/handler/types/MavenPluginArtifactHandler.java @@ -0,0 +1,49 @@ +/* + * 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.artifact.handler.types; + +import javax.inject.Named; +import javax.inject.Provider; +import javax.inject.Singleton; + +import org.apache.maven.artifact.handler.ArtifactHandler; +import org.apache.maven.artifact.handler.ArtifactHandlerImpl; + +/** + * Maven Plugin Artifact Handler. + * + * @since 3.10.0 + */ +@Singleton +@Named(MavenPluginArtifactHandler.NAME) +public final class MavenPluginArtifactHandler implements Provider { + public static final String NAME = "maven-plugin"; + + private final ArtifactHandler instance; + + public MavenPluginArtifactHandler() { + this.instance = + new ArtifactHandlerImpl(NAME, "jar", null, null, false, ArtifactHandlerImpl.LANGUAGE_JAVA, true); + } + + @Override + public ArtifactHandler get() { + return instance; + } +} diff --git a/maven-core/src/main/java/org/apache/maven/artifact/handler/types/PomArtifactHandler.java b/maven-core/src/main/java/org/apache/maven/artifact/handler/types/PomArtifactHandler.java new file mode 100644 index 000000000000..f81432535726 --- /dev/null +++ b/maven-core/src/main/java/org/apache/maven/artifact/handler/types/PomArtifactHandler.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.artifact.handler.types; + +import javax.inject.Named; +import javax.inject.Provider; +import javax.inject.Singleton; + +import org.apache.maven.artifact.handler.ArtifactHandler; +import org.apache.maven.artifact.handler.ArtifactHandlerImpl; + +/** + * POM Artifact Handler. + * + * @since 3.10.0 + */ +@Singleton +@Named(PomArtifactHandler.NAME) +public final class PomArtifactHandler implements Provider { + public static final String NAME = "pom"; + + private final ArtifactHandler instance; + + public PomArtifactHandler() { + this.instance = new ArtifactHandlerImpl(NAME, null, null, null, false, null, false); + } + + @Override + public ArtifactHandler get() { + return instance; + } +} diff --git a/maven-core/src/main/java/org/apache/maven/artifact/handler/types/RarArtifactHandler.java b/maven-core/src/main/java/org/apache/maven/artifact/handler/types/RarArtifactHandler.java new file mode 100644 index 000000000000..d34a9f37522b --- /dev/null +++ b/maven-core/src/main/java/org/apache/maven/artifact/handler/types/RarArtifactHandler.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.artifact.handler.types; + +import javax.inject.Named; +import javax.inject.Provider; +import javax.inject.Singleton; + +import org.apache.maven.artifact.handler.ArtifactHandler; +import org.apache.maven.artifact.handler.ArtifactHandlerImpl; + +/** + * RAR Artifact Handler. + * + * @since 3.10.0 + */ +@Singleton +@Named(RarArtifactHandler.NAME) +public final class RarArtifactHandler implements Provider { + public static final String NAME = "rar"; + + private final ArtifactHandler instance; + + public RarArtifactHandler() { + this.instance = new ArtifactHandlerImpl(NAME, null, null, null, true, ArtifactHandlerImpl.LANGUAGE_JAVA, false); + } + + @Override + public ArtifactHandler get() { + return instance; + } +} diff --git a/maven-core/src/main/java/org/apache/maven/artifact/handler/types/TestJarArtifactHandler.java b/maven-core/src/main/java/org/apache/maven/artifact/handler/types/TestJarArtifactHandler.java new file mode 100644 index 000000000000..19b0df3ba054 --- /dev/null +++ b/maven-core/src/main/java/org/apache/maven/artifact/handler/types/TestJarArtifactHandler.java @@ -0,0 +1,49 @@ +/* + * 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.artifact.handler.types; + +import javax.inject.Named; +import javax.inject.Provider; +import javax.inject.Singleton; + +import org.apache.maven.artifact.handler.ArtifactHandler; +import org.apache.maven.artifact.handler.ArtifactHandlerImpl; + +/** + * Test JAR Artifact Handler. + * + * @since 3.10.0 + */ +@Singleton +@Named(TestJarArtifactHandler.NAME) +public final class TestJarArtifactHandler implements Provider { + public static final String NAME = "test-jar"; + + private final ArtifactHandler instance; + + public TestJarArtifactHandler() { + this.instance = + new ArtifactHandlerImpl(NAME, "jar", "tests", "jar", false, ArtifactHandlerImpl.LANGUAGE_JAVA, true); + } + + @Override + public ArtifactHandler get() { + return instance; + } +} diff --git a/maven-core/src/main/java/org/apache/maven/artifact/handler/types/WarArtifactHandler.java b/maven-core/src/main/java/org/apache/maven/artifact/handler/types/WarArtifactHandler.java new file mode 100644 index 000000000000..3dd6e0b8a1ad --- /dev/null +++ b/maven-core/src/main/java/org/apache/maven/artifact/handler/types/WarArtifactHandler.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.artifact.handler.types; + +import javax.inject.Named; +import javax.inject.Provider; +import javax.inject.Singleton; + +import org.apache.maven.artifact.handler.ArtifactHandler; +import org.apache.maven.artifact.handler.ArtifactHandlerImpl; + +/** + * WAR Artifact Handler. + * + * @since 3.10.0 + */ +@Singleton +@Named(WarArtifactHandler.NAME) +public final class WarArtifactHandler implements Provider { + public static final String NAME = "war"; + + private final ArtifactHandler instance; + + public WarArtifactHandler() { + this.instance = new ArtifactHandlerImpl(NAME, null, null, null, true, ArtifactHandlerImpl.LANGUAGE_JAVA, false); + } + + @Override + public ArtifactHandler get() { + return instance; + } +} 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/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 { From 15f294994b5407d95cc57b31b62ca709ab7687fd Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Thu, 9 Apr 2026 16:55:13 +0200 Subject: [PATCH 03/15] Add packaging --- .../providers/AbstractLifecycleProvider.java | 65 ++++ .../AbstractLifecycleMappingProvider.java | 90 +++++ .../EarLifecycleMappingProvider.java | 49 +++ .../EjbLifecycleMappingProvider.java | 52 +++ .../JarLifecycleMappingProvider.java | 52 +++ .../MavenPluginLifecycleMappingProvider.java | 53 +++ .../PomLifecycleMappingProvider.java | 44 +++ .../RarLifecycleMappingProvider.java | 52 +++ .../WarLifecycleMappingProvider.java | 52 +++ .../META-INF/plexus/default-bindings.xml | 315 ------------------ 10 files changed, 509 insertions(+), 315 deletions(-) create mode 100644 maven-core/src/main/java/org/apache/maven/lifecycle/providers/AbstractLifecycleProvider.java create mode 100644 maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/AbstractLifecycleMappingProvider.java create mode 100644 maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/EarLifecycleMappingProvider.java create mode 100644 maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/EjbLifecycleMappingProvider.java create mode 100644 maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/JarLifecycleMappingProvider.java create mode 100644 maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/MavenPluginLifecycleMappingProvider.java create mode 100644 maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/PomLifecycleMappingProvider.java create mode 100644 maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/RarLifecycleMappingProvider.java create mode 100644 maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/WarLifecycleMappingProvider.java delete mode 100644 maven-core/src/main/resources/META-INF/plexus/default-bindings.xml diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/providers/AbstractLifecycleProvider.java b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/AbstractLifecycleProvider.java new file mode 100644 index 000000000000..f05736505368 --- /dev/null +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/AbstractLifecycleProvider.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; + +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 || len % 2 != 0) { + throw new IllegalArgumentException("Plugin bindings must have more than 0, 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/packaging/AbstractLifecycleMappingProvider.java b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/AbstractLifecycleMappingProvider.java new file mode 100644 index 000000000000..aa52957e789b --- /dev/null +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/AbstractLifecycleMappingProvider.java @@ -0,0 +1,90 @@ +/* + * 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 { + // START SNIPPET: versions + protected static final String RESOURCES_PLUGIN_VERSION = "3.3.1"; + + protected static final String COMPILER_PLUGIN_VERSION = "3.13.0"; + + protected static final String SUREFIRE_PLUGIN_VERSION = "3.5.2"; + + protected static final String INSTALL_PLUGIN_VERSION = "3.1.3"; + + protected static final String DEPLOY_PLUGIN_VERSION = "3.1.3"; + + // packaging + + protected static final String JAR_PLUGIN_VERSION = "3.4.2"; + + protected static final String EAR_PLUGIN_VERSION = "3.3.0"; + + protected static final String EJB_PLUGIN_VERSION = "3.2.1"; + + protected static final String PLUGIN_PLUGIN_VERSION = "3.15.1"; + + protected static final String RAR_PLUGIN_VERSION = "3.0.0"; + + protected static final String WAR_PLUGIN_VERSION = "3.4.0"; + // END SNIPPET: versions + + 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..67883cfdbe10 --- /dev/null +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/EarLifecycleMappingProvider.java @@ -0,0 +1,49 @@ +/* + * 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.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + +/** + * {@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:" + EAR_PLUGIN_VERSION + ":generate-application-xml", + "process-resources", + "org.apache.maven.plugins:maven-resources-plugin:" + RESOURCES_PLUGIN_VERSION + ":resources", + "package", "org.apache.maven.plugins:maven-ear-plugin:" + EAR_PLUGIN_VERSION + ":ear", + "install", "org.apache.maven.plugins:maven-install-plugin:" + INSTALL_PLUGIN_VERSION + ":install", + "deploy", "org.apache.maven.plugins:maven-deploy-plugin:" + DEPLOY_PLUGIN_VERSION + ":deploy" + }; + // END SNIPPET: ear + + @Inject + 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..e3fd9e0bbba8 --- /dev/null +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/EjbLifecycleMappingProvider.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.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + +/** + * {@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:" + RESOURCES_PLUGIN_VERSION + ":resources", + "compile", "org.apache.maven.plugins:maven-compiler-plugin:" + COMPILER_PLUGIN_VERSION + ":compile", + "process-test-resources", + "org.apache.maven.plugins:maven-resources-plugin:" + RESOURCES_PLUGIN_VERSION + ":testResources", + "test-compile", "org.apache.maven.plugins:maven-compiler-plugin:" + COMPILER_PLUGIN_VERSION + ":testCompile", + "test", "org.apache.maven.plugins:maven-surefire-plugin:" + SUREFIRE_PLUGIN_VERSION + ":test", + "package", "org.apache.maven.plugins:maven-ejb-plugin:" + EJB_PLUGIN_VERSION + ":ejb", + "install", "org.apache.maven.plugins:maven-install-plugin:" + INSTALL_PLUGIN_VERSION + ":install", + "deploy", "org.apache.maven.plugins:maven-deploy-plugin:" + DEPLOY_PLUGIN_VERSION + ":deploy" + }; + // END SNIPPET: ejb + + @Inject + 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..98718638a323 --- /dev/null +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/JarLifecycleMappingProvider.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.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + +/** + * {@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:" + RESOURCES_PLUGIN_VERSION + ":resources", + "compile", "org.apache.maven.plugins:maven-compiler-plugin:" + COMPILER_PLUGIN_VERSION + ":compile", + "process-test-resources", + "org.apache.maven.plugins:maven-resources-plugin:" + RESOURCES_PLUGIN_VERSION + ":testResources", + "test-compile", "org.apache.maven.plugins:maven-compiler-plugin:" + COMPILER_PLUGIN_VERSION + ":testCompile", + "test", "org.apache.maven.plugins:maven-surefire-plugin:" + SUREFIRE_PLUGIN_VERSION + ":test", + "package", "org.apache.maven.plugins:maven-jar-plugin:" + JAR_PLUGIN_VERSION + ":jar", + "install", "org.apache.maven.plugins:maven-install-plugin:" + INSTALL_PLUGIN_VERSION + ":install", + "deploy", "org.apache.maven.plugins:maven-deploy-plugin:" + DEPLOY_PLUGIN_VERSION + ":deploy" + }; + // END SNIPPET: jar + + @Inject + 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..3cacb83b7f62 --- /dev/null +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/MavenPluginLifecycleMappingProvider.java @@ -0,0 +1,53 @@ +/* + * 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.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + +/** + * {@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:" + RESOURCES_PLUGIN_VERSION + ":resources", + "compile", "org.apache.maven.plugins:maven-compiler-plugin:" + COMPILER_PLUGIN_VERSION + ":compile", + "process-classes", "org.apache.maven.plugins:maven-plugin-plugin:" + PLUGIN_PLUGIN_VERSION + ":descriptor", + "process-test-resources", + "org.apache.maven.plugins:maven-resources-plugin:" + RESOURCES_PLUGIN_VERSION + ":testResources", + "test-compile", "org.apache.maven.plugins:maven-compiler-plugin:" + COMPILER_PLUGIN_VERSION + ":testCompile", + "test", "org.apache.maven.plugins:maven-surefire-plugin:" + SUREFIRE_PLUGIN_VERSION + ":test", + "package", "org.apache.maven.plugins:maven-jar-plugin:" + JAR_PLUGIN_VERSION + ":jar,", + "install", "org.apache.maven.plugins:maven-install-plugin:" + INSTALL_PLUGIN_VERSION + ":install", + "deploy", "org.apache.maven.plugins:maven-deploy-plugin:" + DEPLOY_PLUGIN_VERSION + ":deploy" + }; + // END SNIPPET: maven-plugin + + @Inject + 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..743f4570db32 --- /dev/null +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/PomLifecycleMappingProvider.java @@ -0,0 +1,44 @@ +/* + * 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.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + +/** + * {@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:" + INSTALL_PLUGIN_VERSION + ":install", + "deploy", "org.apache.maven.plugins:maven-deploy-plugin:" + DEPLOY_PLUGIN_VERSION + ":deploy" + }; + // END SNIPPET: pom + + @Inject + 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..b035443bd536 --- /dev/null +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/RarLifecycleMappingProvider.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.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + +/** + * {@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:" + RESOURCES_PLUGIN_VERSION + ":resources", + "compile", "org.apache.maven.plugins:maven-compiler-plugin:" + COMPILER_PLUGIN_VERSION + ":compile", + "process-test-resources", + "org.apache.maven.plugins:maven-resources-plugin:" + RESOURCES_PLUGIN_VERSION + ":testResources", + "test-compile", "org.apache.maven.plugins:maven-compiler-plugin:" + COMPILER_PLUGIN_VERSION + ":testCompile", + "test", "org.apache.maven.plugins:maven-surefire-plugin:" + SUREFIRE_PLUGIN_VERSION + ":test", + "package", "org.apache.maven.plugins:maven-rar-plugin:" + RAR_PLUGIN_VERSION + ":rar", + "install", "org.apache.maven.plugins:maven-install-plugin:" + INSTALL_PLUGIN_VERSION + ":install", + "deploy", "org.apache.maven.plugins:maven-deploy-plugin:" + DEPLOY_PLUGIN_VERSION + ":deploy" + }; + // END SNIPPET: rar + + @Inject + 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..f743325dcc9c --- /dev/null +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/packaging/WarLifecycleMappingProvider.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.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + +/** + * {@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:" + RESOURCES_PLUGIN_VERSION + ":resources", + "compile", "org.apache.maven.plugins:maven-compiler-plugin:" + COMPILER_PLUGIN_VERSION + ":compile", + "process-test-resources", + "org.apache.maven.plugins:maven-resources-plugin:" + RESOURCES_PLUGIN_VERSION + ":testResources", + "test-compile", "org.apache.maven.plugins:maven-compiler-plugin:" + COMPILER_PLUGIN_VERSION + ":testCompile", + "test", "org.apache.maven.plugins:maven-surefire-plugin:" + SUREFIRE_PLUGIN_VERSION + ":test", + "package", "org.apache.maven.plugins:maven-war-plugin:" + WAR_PLUGIN_VERSION + ":war", + "install", "org.apache.maven.plugins:maven-install-plugin:" + INSTALL_PLUGIN_VERSION + ":install", + "deploy", "org.apache.maven.plugins:maven-deploy-plugin:" + DEPLOY_PLUGIN_VERSION + ":deploy" + }; + // END SNIPPET: war + + @Inject + public WarLifecycleMappingProvider() { + super(BINDINGS); + } +} 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 - - - - - - - - - - From bfd87b32b4d9ec7330616271b152184b41d64b4c Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Thu, 9 Apr 2026 17:25:10 +0200 Subject: [PATCH 04/15] Add lifecycles --- .../AbstractLifecycleProvider.java | 15 ++- .../lifecycle/CleanLifecycleProvider.java | 43 +++++++ .../lifecycle/DefaultLifecycleProvider.java | 65 ++++++++++ .../lifecycle/SiteLifecycleProvider.java | 46 +++++++ .../AbstractLifecycleMappingProvider.java | 3 - .../EarLifecycleMappingProvider.java | 2 - .../EjbLifecycleMappingProvider.java | 2 - .../JarLifecycleMappingProvider.java | 2 - .../MavenPluginLifecycleMappingProvider.java | 2 - .../PomLifecycleMappingProvider.java | 2 - .../RarLifecycleMappingProvider.java | 2 - .../WarLifecycleMappingProvider.java | 2 - .../resources/META-INF/plexus/components.xml | 114 ------------------ 13 files changed, 163 insertions(+), 137 deletions(-) rename maven-core/src/main/java/org/apache/maven/lifecycle/providers/{ => lifecycle}/AbstractLifecycleProvider.java (86%) create mode 100644 maven-core/src/main/java/org/apache/maven/lifecycle/providers/lifecycle/CleanLifecycleProvider.java create mode 100644 maven-core/src/main/java/org/apache/maven/lifecycle/providers/lifecycle/DefaultLifecycleProvider.java create mode 100644 maven-core/src/main/java/org/apache/maven/lifecycle/providers/lifecycle/SiteLifecycleProvider.java delete mode 100644 maven-core/src/main/resources/META-INF/plexus/components.xml diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/providers/AbstractLifecycleProvider.java b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/lifecycle/AbstractLifecycleProvider.java similarity index 86% rename from maven-core/src/main/java/org/apache/maven/lifecycle/providers/AbstractLifecycleProvider.java rename to maven-core/src/main/java/org/apache/maven/lifecycle/providers/lifecycle/AbstractLifecycleProvider.java index f05736505368..e2f85bc4be80 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/providers/AbstractLifecycleProvider.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/lifecycle/AbstractLifecycleProvider.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.maven.lifecycle.providers; +package org.apache.maven.lifecycle.providers.lifecycle; import javax.inject.Provider; @@ -34,19 +34,22 @@ * @since 3.10.0 */ public abstract class AbstractLifecycleProvider implements Provider { + // START SNIPPET: versions + protected static final String CLEAN_PLUGIN_VERSION = "3.5.0"; + + protected static final String SITE_PLUGIN_VERSION = "3.12.1"; + // END SNIPPET: versions + 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 || len % 2 != 0) { - throw new IllegalArgumentException("Plugin bindings must have more than 0, even count of elements"); + 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])); } 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..9bf11b905288 --- /dev/null +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/lifecycle/CleanLifecycleProvider.java @@ -0,0 +1,43 @@ +/* + * 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; + +/** + * 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:" + 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..a0a32c770638 --- /dev/null +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/lifecycle/SiteLifecycleProvider.java @@ -0,0 +1,46 @@ +/* + * 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; + +/** + * 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:" + SITE_PLUGIN_VERSION + ":site", + "site-deploy", + "org.apache.maven.plugins:maven-site-plugin:" + 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 index aa52957e789b..1466e3310889 100644 --- 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 @@ -70,16 +70,13 @@ protected AbstractLifecycleMappingProvider(String[] pluginBindings) { 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)); } 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 index 67883cfdbe10..67221edf9f1d 100644 --- 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 @@ -18,7 +18,6 @@ */ package org.apache.maven.lifecycle.providers.packaging; -import javax.inject.Inject; import javax.inject.Named; import javax.inject.Singleton; @@ -42,7 +41,6 @@ public final class EarLifecycleMappingProvider extends AbstractLifecycleMappingP }; // END SNIPPET: ear - @Inject 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 index e3fd9e0bbba8..00c725a03117 100644 --- 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 @@ -18,7 +18,6 @@ */ package org.apache.maven.lifecycle.providers.packaging; -import javax.inject.Inject; import javax.inject.Named; import javax.inject.Singleton; @@ -45,7 +44,6 @@ public final class EjbLifecycleMappingProvider extends AbstractLifecycleMappingP }; // END SNIPPET: ejb - @Inject 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 index 98718638a323..15537390b810 100644 --- 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 @@ -18,7 +18,6 @@ */ package org.apache.maven.lifecycle.providers.packaging; -import javax.inject.Inject; import javax.inject.Named; import javax.inject.Singleton; @@ -45,7 +44,6 @@ public final class JarLifecycleMappingProvider extends AbstractLifecycleMappingP }; // END SNIPPET: jar - @Inject 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 index 3cacb83b7f62..a5b623aa7004 100644 --- 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 @@ -18,7 +18,6 @@ */ package org.apache.maven.lifecycle.providers.packaging; -import javax.inject.Inject; import javax.inject.Named; import javax.inject.Singleton; @@ -46,7 +45,6 @@ public final class MavenPluginLifecycleMappingProvider extends AbstractLifecycle }; // END SNIPPET: maven-plugin - @Inject 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 index 743f4570db32..4886c519c86f 100644 --- 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 @@ -18,7 +18,6 @@ */ package org.apache.maven.lifecycle.providers.packaging; -import javax.inject.Inject; import javax.inject.Named; import javax.inject.Singleton; @@ -37,7 +36,6 @@ public final class PomLifecycleMappingProvider extends AbstractLifecycleMappingP }; // END SNIPPET: pom - @Inject 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 index b035443bd536..606179fcf33f 100644 --- 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 @@ -18,7 +18,6 @@ */ package org.apache.maven.lifecycle.providers.packaging; -import javax.inject.Inject; import javax.inject.Named; import javax.inject.Singleton; @@ -45,7 +44,6 @@ public final class RarLifecycleMappingProvider extends AbstractLifecycleMappingP }; // END SNIPPET: rar - @Inject 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 index f743325dcc9c..5c7d558d82ba 100644 --- 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 @@ -18,7 +18,6 @@ */ package org.apache.maven.lifecycle.providers.packaging; -import javax.inject.Inject; import javax.inject.Named; import javax.inject.Singleton; @@ -45,7 +44,6 @@ public final class WarLifecycleMappingProvider extends AbstractLifecycleMappingP }; // END SNIPPET: war - @Inject public WarLifecycleMappingProvider() { super(BINDINGS); } 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 - - - - - - - From 80b344ee0deb74bbc78ccba905c7169ea8b56495 Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Thu, 9 Apr 2026 18:07:05 +0200 Subject: [PATCH 05/15] Trivial cases; migrating off plexus logging Only at places where logger was well encapsulated. --- maven-core/pom.xml | 5 +++++ .../src/main/java/org/apache/maven/DefaultMaven.java | 6 +++--- .../maven/classrealm/DefaultClassRealmManager.java | 8 ++++---- .../maven/eventspy/internal/EventSpyDispatcher.java | 6 +++--- .../java/org/apache/maven/graph/DefaultGraphBuilder.java | 6 +++--- .../internal/DefaultLifecyclePluginAnalyzer.java | 8 ++++---- .../maven/lifecycle/internal/LifecycleModuleBuilder.java | 6 ++---- .../maven/lifecycle/internal/LifecycleStarter.java | 8 ++++---- .../maven/lifecycle/internal/MojoDescriptorCreator.java | 7 +++---- .../builder/multithreaded/MultiThreadedBuilder.java | 6 +++--- .../apache/maven/plugin/DefaultBuildPluginManager.java | 6 ++---- .../internal/DefaultPluginDependenciesResolver.java | 6 +++--- .../prefix/internal/DefaultPluginPrefixResolver.java | 6 +++--- .../version/internal/DefaultPluginVersionResolver.java | 6 +++--- .../apache/maven/project/DefaultMavenProjectHelper.java | 7 +++++-- .../org/apache/maven/project/DefaultProjectBuilder.java | 6 +++--- .../maven/project/DefaultProjectBuildingHelper.java | 6 +++--- .../project/DefaultProjectDependenciesResolver.java | 6 +++--- .../maven/project/artifact/MavenMetadataSource.java | 9 +++++---- .../maven/rtinfo/internal/DefaultRuntimeInformation.java | 7 +++---- .../maven/settings/DefaultMavenSettingsBuilder.java | 6 ++++-- 21 files changed, 71 insertions(+), 66 deletions(-) diff --git a/maven-core/pom.xml b/maven-core/pom.xml index 2f28290103ce..8e80b4f3d4df 100644 --- a/maven-core/pom.xml +++ b/maven-core/pom.xml @@ -166,6 +166,11 @@ under the License. plexus-testing test + + org.slf4j + slf4j-simple + test + diff --git a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java index 04406b3122a7..c00554799ca5 100644 --- a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java +++ b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java @@ -57,10 +57,11 @@ import org.apache.maven.session.scope.internal.SessionScope; import org.codehaus.plexus.PlexusContainer; import org.codehaus.plexus.component.repository.exception.ComponentLookupException; -import org.codehaus.plexus.logging.Logger; import org.eclipse.aether.DefaultRepositorySystemSession; import org.eclipse.aether.RepositorySystemSession; import org.eclipse.aether.repository.WorkspaceReader; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @author Jason van Zyl @@ -69,8 +70,7 @@ @Named public class DefaultMaven implements Maven { - @Inject - private Logger logger; + private final Logger logger = LoggerFactory.getLogger(getClass()); @Inject protected ProjectBuilder projectBuilder; diff --git a/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java b/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java index 2bc1652af3a4..71b6ee09a12d 100644 --- a/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java +++ b/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java @@ -44,9 +44,10 @@ import org.codehaus.plexus.classworlds.ClassWorld; import org.codehaus.plexus.classworlds.realm.ClassRealm; import org.codehaus.plexus.classworlds.realm.DuplicateRealmException; -import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.util.StringUtils; import org.eclipse.aether.artifact.Artifact; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Manages the class realms used by Maven. Warning: This is an internal utility class that is only @@ -70,7 +71,7 @@ public class DefaultClassRealmManager implements ClassRealmManager { */ private static final ClassLoader PARENT_CLASSLOADER = ClassWorld.class.getClassLoader(); - private final Logger logger; + private final Logger logger = LoggerFactory.getLogger(getClass()); private final ClassWorld world; @@ -89,8 +90,7 @@ public class DefaultClassRealmManager implements ClassRealmManager { @Inject public DefaultClassRealmManager( - Logger logger, PlexusContainer container, List delegates, CoreExports exports) { - this.logger = logger; + PlexusContainer container, List delegates, CoreExports exports) { this.world = ((MutablePlexusContainer) container).getClassWorld(); this.containerRealm = container.getContainerRealm(); this.delegates = delegates; diff --git a/maven-core/src/main/java/org/apache/maven/eventspy/internal/EventSpyDispatcher.java b/maven-core/src/main/java/org/apache/maven/eventspy/internal/EventSpyDispatcher.java index c33382ab9bbd..821712090c11 100644 --- a/maven-core/src/main/java/org/apache/maven/eventspy/internal/EventSpyDispatcher.java +++ b/maven-core/src/main/java/org/apache/maven/eventspy/internal/EventSpyDispatcher.java @@ -27,8 +27,9 @@ import org.apache.maven.eventspy.EventSpy; import org.apache.maven.execution.ExecutionListener; -import org.codehaus.plexus.logging.Logger; import org.eclipse.aether.RepositoryListener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Dispatches callbacks to all registered eventspies. @@ -38,8 +39,7 @@ @Named public class EventSpyDispatcher { - @Inject - private Logger logger; + private final Logger logger = LoggerFactory.getLogger(getClass()); @Inject private List eventSpies; diff --git a/maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java b/maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java index 10fdac3e4cdb..4320d7ec6f84 100644 --- a/maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java +++ b/maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java @@ -53,9 +53,10 @@ import org.apache.maven.project.ProjectBuildingException; import org.apache.maven.project.ProjectBuildingRequest; import org.apache.maven.project.ProjectBuildingResult; -import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.util.StringUtils; import org.codehaus.plexus.util.dag.CycleDetectedException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Builds the {@link ProjectDependencyGraph inter-dependencies graph} between projects in the reactor. @@ -64,8 +65,7 @@ @Named(GraphBuilder.HINT) public class DefaultGraphBuilder implements GraphBuilder { - @Inject - private Logger logger; + private final Logger logger = LoggerFactory.getLogger(getClass()); @Inject protected ProjectBuilder projectBuilder; diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecyclePluginAnalyzer.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecyclePluginAnalyzer.java index e97ef18b25d8..b56b210bfa69 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecyclePluginAnalyzer.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecyclePluginAnalyzer.java @@ -38,9 +38,10 @@ import org.apache.maven.model.InputSource; import org.apache.maven.model.Plugin; import org.apache.maven.model.PluginExecution; -import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.util.StringUtils; import org.codehaus.plexus.util.xml.Xpp3Dom; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * NOTE: This class is not part of any public api and can be changed or deleted without prior notice. @@ -55,15 +56,14 @@ @Named public class DefaultLifecyclePluginAnalyzer implements LifeCyclePluginAnalyzer { + private final Logger logger = LoggerFactory.getLogger(getClass()); + @Inject private Map lifecycleMappings; @Inject private DefaultLifecycles defaultLifeCycles; - @Inject - private Logger logger; - public DefaultLifecyclePluginAnalyzer() {} // These methods deal with construction intact Plugin object that look like they come from a standard 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 9a00e4499f7d..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 @@ -62,12 +62,10 @@ public class LifecycleModuleBuilder { private ProjectExecutionListener projectExecutionListener; - // TODO this tricks plexus-component-metadata generate required metadata + // 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 - private List projectExecutionListeners; - 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/LifecycleStarter.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleStarter.java index 85997d13788c..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 @@ -34,7 +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.logging.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Starts the build life cycle @@ -46,15 +47,14 @@ @Singleton @Named public class LifecycleStarter { + private final Logger logger = LoggerFactory.getLogger(getClass()); + @Inject private ExecutionEventCatapult eventCatapult; @Inject private DefaultLifecycles defaultLifeCycles; - @Inject - private Logger logger; - @Inject private BuildListCalculator buildListCalculator; 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 25f4632cf061..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 @@ -46,8 +46,9 @@ import org.apache.maven.plugin.version.PluginVersionResolver; import org.apache.maven.project.MavenProject; 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; /** *

@@ -64,9 +65,7 @@ @Singleton @Named public class MojoDescriptorCreator { - - @Inject - private Logger logger; + private final Logger logger = LoggerFactory.getLogger(getClass()); @Inject private PluginVersionResolver pluginVersionResolver; 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 090a3c1938f8..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 @@ -44,7 +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.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). @@ -64,8 +65,7 @@ @Named("multithreaded") public class MultiThreadedBuilder implements Builder { - @Inject - private Logger logger; + private final Logger logger = LoggerFactory.getLogger(getClass()); @Inject private LifecycleModuleBuilder lifecycleModuleBuilder; 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 cbf54b56f39d..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 @@ -59,12 +59,10 @@ public class DefaultBuildPluginManager implements BuildPluginManager { private MojoExecutionListener mojoExecutionListener; - // TODO this tricks plexus-component-metadata generate required metadata + // 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 - private List mojoExecutionListeners; - 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/internal/DefaultPluginDependenciesResolver.java b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java index 4891941b86ef..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 @@ -34,7 +34,6 @@ import org.apache.maven.model.Dependency; import org.apache.maven.model.Plugin; import org.apache.maven.plugin.PluginResolutionException; -import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.util.StringUtils; import org.eclipse.aether.DefaultRepositorySystemSession; import org.eclipse.aether.RepositorySystem; @@ -62,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 @@ -77,8 +78,7 @@ public class DefaultPluginDependenciesResolver implements PluginDependenciesReso private static final String REPOSITORY_CONTEXT = "plugin"; - @Inject - private Logger logger; + private final Logger logger = LoggerFactory.getLogger(getClass()); @Inject private RepositorySystem repoSystem; 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 526d935fc6d9..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 @@ -44,7 +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.logging.Logger; import org.eclipse.aether.DefaultRepositorySystemSession; import org.eclipse.aether.RepositoryEvent; import org.eclipse.aether.RepositoryEvent.EventType; @@ -58,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. @@ -71,8 +72,7 @@ public class DefaultPluginPrefixResolver implements PluginPrefixResolver { private static final String REPOSITORY_CONTEXT = "plugin"; - @Inject - private Logger logger; + private final Logger logger = LoggerFactory.getLogger(getClass()); @Inject private BuildPluginManager pluginManager; 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 535de82ad6db..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 @@ -46,7 +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.logging.Logger; import org.codehaus.plexus.util.StringUtils; import org.eclipse.aether.RepositoryEvent; import org.eclipse.aether.RepositoryEvent.EventType; @@ -64,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. @@ -79,8 +80,7 @@ public class DefaultPluginVersionResolver implements PluginVersionResolver { private static final Object CACHE_KEY = new Object(); - @Inject - private Logger logger; + private final Logger logger = LoggerFactory.getLogger(getClass()); @Inject private RepositorySystem repositorySystem; 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 440ae9159db0..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 @@ -30,7 +30,8 @@ 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.logging.AbstractLogEnabled; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * DefaultMavenProjectHelper @@ -38,7 +39,9 @@ @SuppressWarnings("deprecation") @Singleton @Named -public class DefaultMavenProjectHelper extends AbstractLogEnabled implements MavenProjectHelper { +public class DefaultMavenProjectHelper implements MavenProjectHelper { + protected final Logger logger = LoggerFactory.getLogger(getClass()); + @Inject private ArtifactHandlerManager artifactHandlerManager; 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 6fbccc660e2d..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 @@ -68,7 +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.logging.Logger; import org.codehaus.plexus.util.Os; import org.codehaus.plexus.util.StringUtils; import org.eclipse.aether.RepositorySystemSession; @@ -79,6 +78,8 @@ 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 @@ -90,8 +91,7 @@ public class DefaultProjectBuilder implements ProjectBuilder { public static final String DISABLE_GLOBAL_MODEL_CACHE_SYSTEM_PROPERTY = "maven.defaultProjectBuilder.disableGlobalModelCache"; - @Inject - private Logger logger; + private final Logger logger = LoggerFactory.getLogger(getClass()); @Inject private ModelBuilder modelBuilder; 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 d92fad71f06a..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 @@ -50,9 +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.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 @@ -65,8 +66,7 @@ @Named public class DefaultProjectBuildingHelper implements ProjectBuildingHelper { - @Inject - private Logger logger; + private final Logger logger = LoggerFactory.getLogger(getClass()); @Inject private PlexusContainer container; 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 aec577d563b9..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 @@ -33,7 +33,6 @@ import org.apache.maven.model.Dependency; import org.apache.maven.model.DependencyManagement; import org.apache.maven.model.Exclusion; -import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.util.StringUtils; import org.eclipse.aether.DefaultRepositorySystemSession; import org.eclipse.aether.RepositorySystem; @@ -51,6 +50,8 @@ 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 @@ -59,8 +60,7 @@ @Named public class DefaultProjectDependenciesResolver implements ProjectDependenciesResolver { - @Inject - private Logger logger; + private final Logger logger = LoggerFactory.getLogger(getClass()); @Inject private RepositorySystem repoSystem; 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 5a48b43e1b67..07a5539e5ede 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 @@ -80,16 +80,20 @@ 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.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 */ public class MavenMetadataSource implements ArtifactMetadataSource { + + private final Logger logger = LoggerFactory.getLogger(getClass()); + @Inject private RepositoryMetadataManager repositoryMetadataManager; @@ -102,9 +106,6 @@ public class MavenMetadataSource implements ArtifactMetadataSource { @Inject private Provider projectBuilderProvider; - @Inject - private Logger logger; - @Inject private MavenMetadataCache cache; 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 7b3bf179fa61..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,7 +18,6 @@ */ package org.apache.maven.rtinfo.internal; -import javax.inject.Inject; import javax.inject.Named; import javax.inject.Singleton; @@ -28,12 +27,13 @@ import java.util.Properties; import org.apache.maven.rtinfo.RuntimeInformation; -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. @@ -42,8 +42,7 @@ @Named public class DefaultRuntimeInformation implements RuntimeInformation { - @Inject - 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 d1c0401eb2f0..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 @@ -31,16 +31,18 @@ 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.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 */ @Singleton @Named -public class DefaultMavenSettingsBuilder extends AbstractLogEnabled implements MavenSettingsBuilder { +public class DefaultMavenSettingsBuilder implements MavenSettingsBuilder { + protected final Logger logger = LoggerFactory.getLogger(getClass()); @Inject private SettingsBuilder settingsBuilder; From 6e19649789eb21852e4f461395c3cd2819d807da Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Thu, 9 Apr 2026 18:11:18 +0200 Subject: [PATCH 06/15] This internal component should use ctor injection To stop confusion about field vs setter. --- .../maven/eventspy/internal/EventSpyDispatcher.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/maven-core/src/main/java/org/apache/maven/eventspy/internal/EventSpyDispatcher.java b/maven-core/src/main/java/org/apache/maven/eventspy/internal/EventSpyDispatcher.java index 821712090c11..82d7e2dbe486 100644 --- a/maven-core/src/main/java/org/apache/maven/eventspy/internal/EventSpyDispatcher.java +++ b/maven-core/src/main/java/org/apache/maven/eventspy/internal/EventSpyDispatcher.java @@ -22,7 +22,6 @@ import javax.inject.Named; import javax.inject.Singleton; -import java.util.ArrayList; import java.util.List; import org.apache.maven.eventspy.EventSpy; @@ -41,12 +40,11 @@ public class EventSpyDispatcher { private final Logger logger = LoggerFactory.getLogger(getClass()); - @Inject - private List eventSpies; + private final List eventSpies; - public void setEventSpies(List eventSpies) { - // make copy to get rid of needless overhead for dynamic lookups - this.eventSpies = new ArrayList<>(eventSpies); + @Inject + public EventSpyDispatcher(List eventSpies) { + this.eventSpies = eventSpies; } public List getEventSpies() { From 13654d0789e2fbb6fe30771129e03888942f5909 Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Thu, 9 Apr 2026 19:10:28 +0200 Subject: [PATCH 07/15] Last wrinkles --- maven-compat/pom.xml | 10 ++++++++++ .../maven/project/AbstractMavenProjectTestCase.java | 1 + .../org/apache/maven/project/ProjectClasspathTest.java | 7 ++++++- .../org/apache/maven/project/TestProjectBuilder.java | 7 +++++-- .../AbstractProjectInheritanceTestCase.java | 6 ++++++ .../maven/project/artifact/MavenMetadataSource.java | 4 ++++ 6 files changed, 32 insertions(+), 3 deletions(-) diff --git a/maven-compat/pom.xml b/maven-compat/pom.xml index 01ffd81e109e..d1814140527e 100644 --- a/maven-compat/pom.xml +++ b/maven-compat/pom.xml @@ -127,10 +127,20 @@ under the License. plexus-testing test + + org.slf4j + slf4j-simple + test + + + + org.eclipse.sisu + sisu-maven-plugin + org.codehaus.plexus plexus-component-metadata diff --git a/maven-compat/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java b/maven-compat/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java index ea0fc5769ce5..404c23a83ce4 100644 --- a/maven-compat/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java +++ b/maven-compat/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java @@ -143,6 +143,7 @@ protected MavenProject getProject(File pom) throws Exception { private void initRepoSession(ProjectBuildingRequest request) { File localRepo = new File(request.getLocalRepository().getBasedir()); DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession(); + session.setConfigProperty("aether.remoteRepositoryFilter.prefixes.resolvePrefixFiles", "false"); session.setLocalRepositoryManager(new LegacyLocalRepositoryManager(localRepo)); request.setRepositorySession(session); } diff --git a/maven-compat/src/test/java/org/apache/maven/project/ProjectClasspathTest.java b/maven-compat/src/test/java/org/apache/maven/project/ProjectClasspathTest.java index 0c32602d2be2..196d2f87c8be 100644 --- a/maven-compat/src/test/java/org/apache/maven/project/ProjectClasspathTest.java +++ b/maven-compat/src/test/java/org/apache/maven/project/ProjectClasspathTest.java @@ -22,6 +22,7 @@ import org.apache.maven.artifact.Artifact; import org.apache.maven.repository.internal.DefaultArtifactDescriptorReader; +import org.codehaus.plexus.component.repository.ComponentDescriptor; import org.codehaus.plexus.testing.PlexusTest; import org.eclipse.aether.impl.ArtifactDescriptorReader; import org.eclipse.aether.impl.ArtifactResolver; @@ -45,8 +46,12 @@ public void setUp() throws Exception { projectBuilder = container.lookup(ProjectBuilder.class, "classpath"); + // create fake project builder component descriptor + ComponentDescriptor fakeProjectBuilder = + new ComponentDescriptor<>(TestProjectBuilder.class, container.getContainerRealm()); + fakeProjectBuilder.setRoleClass(ProjectClasspathTest.class); // the metadata source looks up the default impl, so we have to trick it - container.addComponent(projectBuilder, ProjectBuilder.class, "default"); + container.addComponentDescriptor(fakeProjectBuilder); } @Test diff --git a/maven-compat/src/test/java/org/apache/maven/project/TestProjectBuilder.java b/maven-compat/src/test/java/org/apache/maven/project/TestProjectBuilder.java index ba2693fb863e..b2df7c3d974f 100644 --- a/maven-compat/src/test/java/org/apache/maven/project/TestProjectBuilder.java +++ b/maven-compat/src/test/java/org/apache/maven/project/TestProjectBuilder.java @@ -18,6 +18,9 @@ */ package org.apache.maven.project; +import javax.inject.Named; +import javax.inject.Singleton; + import java.io.File; import java.io.FileNotFoundException; import java.net.URISyntaxException; @@ -25,9 +28,9 @@ import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.repository.ArtifactRepository; -import org.codehaus.plexus.component.annotations.Component; -@Component(role = ProjectBuilder.class, hint = "classpath") +@Singleton +@Named("classpath") public class TestProjectBuilder extends DefaultProjectBuilder { @Override diff --git a/maven-compat/src/test/java/org/apache/maven/project/inheritance/AbstractProjectInheritanceTestCase.java b/maven-compat/src/test/java/org/apache/maven/project/inheritance/AbstractProjectInheritanceTestCase.java index 567dc64a7814..4942a4f20872 100644 --- a/maven-compat/src/test/java/org/apache/maven/project/inheritance/AbstractProjectInheritanceTestCase.java +++ b/maven-compat/src/test/java/org/apache/maven/project/inheritance/AbstractProjectInheritanceTestCase.java @@ -21,6 +21,7 @@ import java.io.File; import org.apache.maven.project.AbstractMavenProjectTestCase; +import org.codehaus.plexus.ContainerConfiguration; import static org.codehaus.plexus.testing.PlexusExtension.getTestFile; @@ -28,6 +29,11 @@ * @author Jason van Zyl */ public abstract class AbstractProjectInheritanceTestCase extends AbstractMavenProjectTestCase { + @Override + public void customizeConfiguration(ContainerConfiguration containerConfiguration) { + super.customizeConfiguration(containerConfiguration); + } + protected String getTestSeries() { String className = getClass().getPackage().getName(); 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 07a5539e5ede..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 @@ -19,7 +19,9 @@ 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; @@ -90,6 +92,8 @@ /** * @author Jason van Zyl */ +@Singleton +@Named("maven") public class MavenMetadataSource implements ArtifactMetadataSource { private final Logger logger = LoggerFactory.getLogger(getClass()); From 38c6a12ec2fc82c73a0b8bd3bb0ea0cf81885fdc Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Thu, 9 Apr 2026 19:12:50 +0200 Subject: [PATCH 08/15] Undo this irrelevant change --- .../inheritance/AbstractProjectInheritanceTestCase.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/maven-compat/src/test/java/org/apache/maven/project/inheritance/AbstractProjectInheritanceTestCase.java b/maven-compat/src/test/java/org/apache/maven/project/inheritance/AbstractProjectInheritanceTestCase.java index 4942a4f20872..b3be83eb65a3 100644 --- a/maven-compat/src/test/java/org/apache/maven/project/inheritance/AbstractProjectInheritanceTestCase.java +++ b/maven-compat/src/test/java/org/apache/maven/project/inheritance/AbstractProjectInheritanceTestCase.java @@ -21,7 +21,6 @@ import java.io.File; import org.apache.maven.project.AbstractMavenProjectTestCase; -import org.codehaus.plexus.ContainerConfiguration; import static org.codehaus.plexus.testing.PlexusExtension.getTestFile; @@ -29,10 +28,6 @@ * @author Jason van Zyl */ public abstract class AbstractProjectInheritanceTestCase extends AbstractMavenProjectTestCase { - @Override - public void customizeConfiguration(ContainerConfiguration containerConfiguration) { - super.customizeConfiguration(containerConfiguration); - } protected String getTestSeries() { String className = getClass().getPackage().getName(); From de378934f252425cc299f266b8cf4119eae9be39 Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Thu, 9 Apr 2026 19:13:15 +0200 Subject: [PATCH 09/15] Undo this irrelevant change --- .../project/inheritance/AbstractProjectInheritanceTestCase.java | 1 - 1 file changed, 1 deletion(-) diff --git a/maven-compat/src/test/java/org/apache/maven/project/inheritance/AbstractProjectInheritanceTestCase.java b/maven-compat/src/test/java/org/apache/maven/project/inheritance/AbstractProjectInheritanceTestCase.java index b3be83eb65a3..567dc64a7814 100644 --- a/maven-compat/src/test/java/org/apache/maven/project/inheritance/AbstractProjectInheritanceTestCase.java +++ b/maven-compat/src/test/java/org/apache/maven/project/inheritance/AbstractProjectInheritanceTestCase.java @@ -28,7 +28,6 @@ * @author Jason van Zyl */ public abstract class AbstractProjectInheritanceTestCase extends AbstractMavenProjectTestCase { - protected String getTestSeries() { String className = getClass().getPackage().getName(); From 28c56d6127904cae84d0f83faeac136e52dc9d07 Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Thu, 9 Apr 2026 19:14:20 +0200 Subject: [PATCH 10/15] Add explanation why --- .../org/apache/maven/project/AbstractMavenProjectTestCase.java | 1 + 1 file changed, 1 insertion(+) diff --git a/maven-compat/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java b/maven-compat/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java index 404c23a83ce4..060cdbf369cf 100644 --- a/maven-compat/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java +++ b/maven-compat/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java @@ -143,6 +143,7 @@ protected MavenProject getProject(File pom) throws Exception { private void initRepoSession(ProjectBuildingRequest request) { File localRepo = new File(request.getLocalRepository().getBasedir()); DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession(); + // many maven-compat tests use checkout as local repo; disable this feat to not create uncommited changes session.setConfigProperty("aether.remoteRepositoryFilter.prefixes.resolvePrefixFiles", "false"); session.setLocalRepositoryManager(new LegacyLocalRepositoryManager(localRepo)); request.setRepositorySession(session); From 4911b561c017b7db95605baf21a3dc48d161ace5 Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Thu, 9 Apr 2026 19:46:01 +0200 Subject: [PATCH 11/15] Undo this change --- .../apache/maven/classrealm/DefaultClassRealmManager.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java b/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java index 71b6ee09a12d..2bc1652af3a4 100644 --- a/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java +++ b/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java @@ -44,10 +44,9 @@ import org.codehaus.plexus.classworlds.ClassWorld; import org.codehaus.plexus.classworlds.realm.ClassRealm; import org.codehaus.plexus.classworlds.realm.DuplicateRealmException; +import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.util.StringUtils; import org.eclipse.aether.artifact.Artifact; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * Manages the class realms used by Maven. Warning: This is an internal utility class that is only @@ -71,7 +70,7 @@ public class DefaultClassRealmManager implements ClassRealmManager { */ private static final ClassLoader PARENT_CLASSLOADER = ClassWorld.class.getClassLoader(); - private final Logger logger = LoggerFactory.getLogger(getClass()); + private final Logger logger; private final ClassWorld world; @@ -90,7 +89,8 @@ public class DefaultClassRealmManager implements ClassRealmManager { @Inject public DefaultClassRealmManager( - PlexusContainer container, List delegates, CoreExports exports) { + Logger logger, PlexusContainer container, List delegates, CoreExports exports) { + this.logger = logger; this.world = ((MutablePlexusContainer) container).getClassWorld(); this.containerRealm = container.getContainerRealm(); this.delegates = delegates; From c86c3e1313563345528f2b66287eb90f8bae8c0f Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Thu, 9 Apr 2026 19:51:29 +0200 Subject: [PATCH 12/15] Add small hack to make it work in tests but also in real life --- .../maven/lifecycle/DefaultLifecycles.java | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycles.java b/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycles.java index 0c039af29afa..37e5ff11f4e6 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycles.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycles.java @@ -31,6 +31,8 @@ import java.util.Map; import java.util.Set; +import org.codehaus.plexus.PlexusContainer; +import org.codehaus.plexus.component.repository.exception.ComponentLookupException; import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.util.StringUtils; @@ -46,14 +48,15 @@ public class DefaultLifecycles { public static final String[] STANDARD_LIFECYCLES = {"clean", "default", "site"}; - // @Configuration(source="org/apache/maven/lifecycle/lifecycles.xml") - @Inject private Map lifecycles; @Inject private Logger logger; + @Inject + private PlexusContainer plexusContainer; + public DefaultLifecycles() {} public DefaultLifecycles(Map lifecycles, Logger logger) { @@ -103,7 +106,22 @@ public Map getPhaseToLifecycleMap() { */ public List getLifeCycles() { // ensure canonical order of standard lifecycles - Map lifecycles = new LinkedHashMap<>(this.lifecycles); + + Map lifecycles = new LinkedHashMap<>(); + + // 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.lifecycles.keySet()) { + try { + lifecycles.put(name, plexusContainer.lookup(Lifecycle.class, name)); + } catch (ComponentLookupException e) { + // skip it + } + } + } else { + lifecycles.putAll(this.lifecycles); + } LinkedHashSet lifecycleNames = new LinkedHashSet<>(Arrays.asList(STANDARD_LIFECYCLES)); lifecycleNames.addAll(lifecycles.keySet()); From e03817e6d2c1c64f02571470654007d79ab8baf4 Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Thu, 9 Apr 2026 20:52:54 +0200 Subject: [PATCH 13/15] Add filtering here as well --- .../DefaultLifecyclePluginAnalyzer.java | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecyclePluginAnalyzer.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecyclePluginAnalyzer.java index b56b210bfa69..2e71c109362f 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecyclePluginAnalyzer.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecyclePluginAnalyzer.java @@ -22,6 +22,7 @@ import javax.inject.Named; import javax.inject.Singleton; +import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; @@ -38,6 +39,8 @@ import org.apache.maven.model.InputSource; import org.apache.maven.model.Plugin; import org.apache.maven.model.PluginExecution; +import org.codehaus.plexus.PlexusContainer; +import org.codehaus.plexus.component.repository.exception.ComponentLookupException; import org.codehaus.plexus.util.StringUtils; import org.codehaus.plexus.util.xml.Xpp3Dom; import org.slf4j.Logger; @@ -64,6 +67,9 @@ public class DefaultLifecyclePluginAnalyzer implements LifeCyclePluginAnalyzer { @Inject private DefaultLifecycles defaultLifeCycles; + @Inject + private PlexusContainer plexusContainer; + public DefaultLifecyclePluginAnalyzer() {} // These methods deal with construction intact Plugin object that look like they come from a standard @@ -82,7 +88,22 @@ public Set getPluginsBoundByDefaultToAllLifecycles(String packaging) { + Thread.currentThread().getContextClassLoader()); } - LifecycleMapping lifecycleMappingForPackaging = lifecycleMappings.get(packaging); + Map 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; From 6982aac8a8554cb802fa907b2f16a52236fdf8bd Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Thu, 9 Apr 2026 22:27:25 +0200 Subject: [PATCH 14/15] Automate plugin updates; use same as build uses --- maven-core/pom.xml | 6 ++ .../lifecycle/providers/PluginVersions.java | 80 +++++++++++++++++++ .../lifecycle/AbstractLifecycleProvider.java | 6 -- .../lifecycle/CleanLifecycleProvider.java | 4 +- .../lifecycle/SiteLifecycleProvider.java | 6 +- .../AbstractLifecycleMappingProvider.java | 26 ------ .../EarLifecycleMappingProvider.java | 15 ++-- .../EjbLifecycleMappingProvider.java | 24 ++++-- .../JarLifecycleMappingProvider.java | 24 ++++-- .../MavenPluginLifecycleMappingProvider.java | 27 ++++--- .../PomLifecycleMappingProvider.java | 7 +- .../RarLifecycleMappingProvider.java | 24 ++++-- .../WarLifecycleMappingProvider.java | 24 ++++-- .../providers/plugin-versions.properties | 33 ++++++++ 14 files changed, 223 insertions(+), 83 deletions(-) create mode 100644 maven-core/src/main/java/org/apache/maven/lifecycle/providers/PluginVersions.java create mode 100644 maven-core/src/main/resources/org/apache/maven/lifecycle/providers/plugin-versions.properties diff --git a/maven-core/pom.xml b/maven-core/pom.xml index 8e80b4f3d4df..329c22a6546b 100644 --- a/maven-core/pom.xml +++ b/maven-core/pom.xml @@ -31,6 +31,12 @@ under the License. Maven Core Maven Core classes. + + + 3.3.0 + 3.1.0 + + 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 index e2f85bc4be80..b89ba8d46d0a 100644 --- 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 @@ -34,12 +34,6 @@ * @since 3.10.0 */ public abstract class AbstractLifecycleProvider implements Provider { - // START SNIPPET: versions - protected static final String CLEAN_PLUGIN_VERSION = "3.5.0"; - - protected static final String SITE_PLUGIN_VERSION = "3.12.1"; - // END SNIPPET: versions - private final Lifecycle lifecycle; protected AbstractLifecycleProvider(String id, String[] phases, String[] pluginBindings) { 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 index 9bf11b905288..cf7dc32ba95e 100644 --- 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 @@ -21,6 +21,8 @@ import javax.inject.Named; import javax.inject.Singleton; +import org.apache.maven.lifecycle.providers.PluginVersions; + /** * Clean lifecycle provider. * @@ -34,7 +36,7 @@ public class CleanLifecycleProvider extends AbstractLifecycleProvider { private static final String[] PHASES = {"pre-clean", "clean", "post-clean"}; private static final String[] PLUGIN_BINDINGS = { - "clean", "org.apache.maven.plugins:maven-clean-plugin:" + CLEAN_PLUGIN_VERSION + ":clean" + "clean", "org.apache.maven.plugins:maven-clean-plugin:" + PluginVersions.CLEAN_PLUGIN_VERSION + ":clean" }; public CleanLifecycleProvider() { 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 index a0a32c770638..53f2675145bb 100644 --- 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 @@ -21,6 +21,8 @@ import javax.inject.Named; import javax.inject.Singleton; +import org.apache.maven.lifecycle.providers.PluginVersions; + /** * Site lifecycle provider. * @@ -35,9 +37,9 @@ public class SiteLifecycleProvider extends AbstractLifecycleProvider { private static final String[] PLUGIN_BINDINGS = { "site", - "org.apache.maven.plugins:maven-site-plugin:" + SITE_PLUGIN_VERSION + ":site", + "org.apache.maven.plugins:maven-site-plugin:" + PluginVersions.SITE_PLUGIN_VERSION + ":site", "site-deploy", - "org.apache.maven.plugins:maven-site-plugin:" + SITE_PLUGIN_VERSION + ":deploy" + "org.apache.maven.plugins:maven-site-plugin:" + PluginVersions.SITE_PLUGIN_VERSION + ":deploy" }; public SiteLifecycleProvider() { 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 index 1466e3310889..2452d18bf03a 100644 --- 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 @@ -36,32 +36,6 @@ * @since 3.10.0 */ public abstract class AbstractLifecycleMappingProvider implements Provider { - // START SNIPPET: versions - protected static final String RESOURCES_PLUGIN_VERSION = "3.3.1"; - - protected static final String COMPILER_PLUGIN_VERSION = "3.13.0"; - - protected static final String SUREFIRE_PLUGIN_VERSION = "3.5.2"; - - protected static final String INSTALL_PLUGIN_VERSION = "3.1.3"; - - protected static final String DEPLOY_PLUGIN_VERSION = "3.1.3"; - - // packaging - - protected static final String JAR_PLUGIN_VERSION = "3.4.2"; - - protected static final String EAR_PLUGIN_VERSION = "3.3.0"; - - protected static final String EJB_PLUGIN_VERSION = "3.2.1"; - - protected static final String PLUGIN_PLUGIN_VERSION = "3.15.1"; - - protected static final String RAR_PLUGIN_VERSION = "3.0.0"; - - protected static final String WAR_PLUGIN_VERSION = "3.4.0"; - // END SNIPPET: versions - private final LifecycleMapping lifecycleMapping; protected AbstractLifecycleMappingProvider(String[] pluginBindings) { 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 index 67221edf9f1d..d438303565e0 100644 --- 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 @@ -21,6 +21,8 @@ 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. * @@ -32,12 +34,15 @@ public final class EarLifecycleMappingProvider extends AbstractLifecycleMappingP // START SNIPPET: ear private static final String[] BINDINGS = { "generate-resources", - "org.apache.maven.plugins:maven-ear-plugin:" + EAR_PLUGIN_VERSION + ":generate-application-xml", + "org.apache.maven.plugins:maven-ear-plugin:" + PluginVersions.EAR_PLUGIN_VERSION + + ":generate-application-xml", "process-resources", - "org.apache.maven.plugins:maven-resources-plugin:" + RESOURCES_PLUGIN_VERSION + ":resources", - "package", "org.apache.maven.plugins:maven-ear-plugin:" + EAR_PLUGIN_VERSION + ":ear", - "install", "org.apache.maven.plugins:maven-install-plugin:" + INSTALL_PLUGIN_VERSION + ":install", - "deploy", "org.apache.maven.plugins:maven-deploy-plugin:" + DEPLOY_PLUGIN_VERSION + ":deploy" + "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 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 index 00c725a03117..bb9966174feb 100644 --- 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 @@ -21,6 +21,8 @@ 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. * @@ -32,15 +34,21 @@ public final class EjbLifecycleMappingProvider extends AbstractLifecycleMappingP // START SNIPPET: ejb private static final String[] BINDINGS = { "process-resources", - "org.apache.maven.plugins:maven-resources-plugin:" + RESOURCES_PLUGIN_VERSION + ":resources", - "compile", "org.apache.maven.plugins:maven-compiler-plugin:" + COMPILER_PLUGIN_VERSION + ":compile", + "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:" + RESOURCES_PLUGIN_VERSION + ":testResources", - "test-compile", "org.apache.maven.plugins:maven-compiler-plugin:" + COMPILER_PLUGIN_VERSION + ":testCompile", - "test", "org.apache.maven.plugins:maven-surefire-plugin:" + SUREFIRE_PLUGIN_VERSION + ":test", - "package", "org.apache.maven.plugins:maven-ejb-plugin:" + EJB_PLUGIN_VERSION + ":ejb", - "install", "org.apache.maven.plugins:maven-install-plugin:" + INSTALL_PLUGIN_VERSION + ":install", - "deploy", "org.apache.maven.plugins:maven-deploy-plugin:" + DEPLOY_PLUGIN_VERSION + ":deploy" + "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 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 index 15537390b810..5c3e7e44b31e 100644 --- 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 @@ -21,6 +21,8 @@ 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. * @@ -32,15 +34,21 @@ public final class JarLifecycleMappingProvider extends AbstractLifecycleMappingP // START SNIPPET: jar private static final String[] BINDINGS = { "process-resources", - "org.apache.maven.plugins:maven-resources-plugin:" + RESOURCES_PLUGIN_VERSION + ":resources", - "compile", "org.apache.maven.plugins:maven-compiler-plugin:" + COMPILER_PLUGIN_VERSION + ":compile", + "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:" + RESOURCES_PLUGIN_VERSION + ":testResources", - "test-compile", "org.apache.maven.plugins:maven-compiler-plugin:" + COMPILER_PLUGIN_VERSION + ":testCompile", - "test", "org.apache.maven.plugins:maven-surefire-plugin:" + SUREFIRE_PLUGIN_VERSION + ":test", - "package", "org.apache.maven.plugins:maven-jar-plugin:" + JAR_PLUGIN_VERSION + ":jar", - "install", "org.apache.maven.plugins:maven-install-plugin:" + INSTALL_PLUGIN_VERSION + ":install", - "deploy", "org.apache.maven.plugins:maven-deploy-plugin:" + DEPLOY_PLUGIN_VERSION + ":deploy" + "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 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 index a5b623aa7004..2b69f452a89f 100644 --- 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 @@ -21,6 +21,8 @@ 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. * @@ -32,16 +34,23 @@ public final class MavenPluginLifecycleMappingProvider extends AbstractLifecycle // START SNIPPET: maven-plugin private static final String[] BINDINGS = { "process-resources", - "org.apache.maven.plugins:maven-resources-plugin:" + RESOURCES_PLUGIN_VERSION + ":resources", - "compile", "org.apache.maven.plugins:maven-compiler-plugin:" + COMPILER_PLUGIN_VERSION + ":compile", - "process-classes", "org.apache.maven.plugins:maven-plugin-plugin:" + PLUGIN_PLUGIN_VERSION + ":descriptor", + "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:" + RESOURCES_PLUGIN_VERSION + ":testResources", - "test-compile", "org.apache.maven.plugins:maven-compiler-plugin:" + COMPILER_PLUGIN_VERSION + ":testCompile", - "test", "org.apache.maven.plugins:maven-surefire-plugin:" + SUREFIRE_PLUGIN_VERSION + ":test", - "package", "org.apache.maven.plugins:maven-jar-plugin:" + JAR_PLUGIN_VERSION + ":jar,", - "install", "org.apache.maven.plugins:maven-install-plugin:" + INSTALL_PLUGIN_VERSION + ":install", - "deploy", "org.apache.maven.plugins:maven-deploy-plugin:" + DEPLOY_PLUGIN_VERSION + ":deploy" + "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 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 index 4886c519c86f..e0e32f6f3015 100644 --- 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 @@ -21,6 +21,8 @@ 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. * @@ -31,8 +33,9 @@ public final class PomLifecycleMappingProvider extends AbstractLifecycleMappingProvider { // START SNIPPET: pom private static final String[] BINDINGS = { - "install", "org.apache.maven.plugins:maven-install-plugin:" + INSTALL_PLUGIN_VERSION + ":install", - "deploy", "org.apache.maven.plugins:maven-deploy-plugin:" + DEPLOY_PLUGIN_VERSION + ":deploy" + "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 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 index 606179fcf33f..3efd77ec2a16 100644 --- 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 @@ -21,6 +21,8 @@ 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. * @@ -32,15 +34,21 @@ public final class RarLifecycleMappingProvider extends AbstractLifecycleMappingP // START SNIPPET: rar private static final String[] BINDINGS = { "process-resources", - "org.apache.maven.plugins:maven-resources-plugin:" + RESOURCES_PLUGIN_VERSION + ":resources", - "compile", "org.apache.maven.plugins:maven-compiler-plugin:" + COMPILER_PLUGIN_VERSION + ":compile", + "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:" + RESOURCES_PLUGIN_VERSION + ":testResources", - "test-compile", "org.apache.maven.plugins:maven-compiler-plugin:" + COMPILER_PLUGIN_VERSION + ":testCompile", - "test", "org.apache.maven.plugins:maven-surefire-plugin:" + SUREFIRE_PLUGIN_VERSION + ":test", - "package", "org.apache.maven.plugins:maven-rar-plugin:" + RAR_PLUGIN_VERSION + ":rar", - "install", "org.apache.maven.plugins:maven-install-plugin:" + INSTALL_PLUGIN_VERSION + ":install", - "deploy", "org.apache.maven.plugins:maven-deploy-plugin:" + DEPLOY_PLUGIN_VERSION + ":deploy" + "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 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 index 5c7d558d82ba..d7a00eea3ae1 100644 --- 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 @@ -21,6 +21,8 @@ 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. * @@ -32,15 +34,21 @@ public final class WarLifecycleMappingProvider extends AbstractLifecycleMappingP // START SNIPPET: war private static final String[] BINDINGS = { "process-resources", - "org.apache.maven.plugins:maven-resources-plugin:" + RESOURCES_PLUGIN_VERSION + ":resources", - "compile", "org.apache.maven.plugins:maven-compiler-plugin:" + COMPILER_PLUGIN_VERSION + ":compile", + "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:" + RESOURCES_PLUGIN_VERSION + ":testResources", - "test-compile", "org.apache.maven.plugins:maven-compiler-plugin:" + COMPILER_PLUGIN_VERSION + ":testCompile", - "test", "org.apache.maven.plugins:maven-surefire-plugin:" + SUREFIRE_PLUGIN_VERSION + ":test", - "package", "org.apache.maven.plugins:maven-war-plugin:" + WAR_PLUGIN_VERSION + ":war", - "install", "org.apache.maven.plugins:maven-install-plugin:" + INSTALL_PLUGIN_VERSION + ":install", - "deploy", "org.apache.maven.plugins:maven-deploy-plugin:" + DEPLOY_PLUGIN_VERSION + ":deploy" + "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 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} From b27068237d675bbadace02735b8a3f12cefa818d Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Fri, 10 Apr 2026 11:55:40 +0200 Subject: [PATCH 15/15] Drop new fatjar --- .../handler/types/FatJarArtifactHandler.java | 48 ------------------- 1 file changed, 48 deletions(-) delete mode 100644 maven-core/src/main/java/org/apache/maven/artifact/handler/types/FatJarArtifactHandler.java diff --git a/maven-core/src/main/java/org/apache/maven/artifact/handler/types/FatJarArtifactHandler.java b/maven-core/src/main/java/org/apache/maven/artifact/handler/types/FatJarArtifactHandler.java deleted file mode 100644 index b696acb9e2ed..000000000000 --- a/maven-core/src/main/java/org/apache/maven/artifact/handler/types/FatJarArtifactHandler.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * 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.artifact.handler.types; - -import javax.inject.Named; -import javax.inject.Provider; -import javax.inject.Singleton; - -import org.apache.maven.artifact.handler.ArtifactHandler; -import org.apache.maven.artifact.handler.ArtifactHandlerImpl; - -/** - * Fat-JAR Artifact Handler. - * - * @since 3.10.0 - */ -@Singleton -@Named(FatJarArtifactHandler.NAME) -public final class FatJarArtifactHandler implements Provider { - public static final String NAME = "fatjar"; - - private final ArtifactHandler instance; - - public FatJarArtifactHandler() { - this.instance = new ArtifactHandlerImpl(NAME, "jar", null, null, true, ArtifactHandlerImpl.LANGUAGE_JAVA, true); - } - - @Override - public ArtifactHandler get() { - return instance; - } -}