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..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,8 @@ 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); } 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-core/pom.xml b/maven-core/pom.xml index 6867da4a0347..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 + + @@ -166,6 +172,11 @@ under the License. plexus-testing test + + org.slf4j + slf4j-simple + test + @@ -192,10 +203,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..c00554799ca5 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,45 +56,45 @@ 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; import org.eclipse.aether.RepositorySystemSession; import org.eclipse.aether.repository.WorkspaceReader; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @author Jason van Zyl */ -@Component(role = Maven.class) +@Singleton +@Named public class DefaultMaven implements Maven { - @Requirement - private Logger logger; + private final Logger logger = LoggerFactory.getLogger(getClass()); - @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/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/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..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 @@ -18,26 +18,33 @@ */ 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) - 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/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/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..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 @@ -18,32 +18,33 @@ */ package org.apache.maven.eventspy.internal; -import java.util.ArrayList; +import javax.inject.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + 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; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Dispatches callbacks to all registered eventspies. * @since 3.0.2 */ -@Component(role = EventSpyDispatcher.class) +@Singleton +@Named public class EventSpyDispatcher { - @Requirement - private Logger logger; + private final Logger logger = LoggerFactory.getLogger(getClass()); - @Requirement(role = EventSpy.class) - 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() { 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..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 @@ -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,22 +53,21 @@ 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; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * 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 - private Logger logger; + private final Logger logger = LoggerFactory.getLogger(getClass()); - @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..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 @@ -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,8 @@ 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.PlexusContainer; +import org.codehaus.plexus.component.repository.exception.ComponentLookupException; import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.util.StringUtils; @@ -39,18 +43,20 @@ */ // 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; + @Inject + private PlexusContainer plexusContainer; + public DefaultLifecycles() {} public DefaultLifecycles(Map lifecycles, Logger logger) { @@ -100,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()); 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..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 @@ -18,6 +18,11 @@ */ 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.HashSet; import java.util.LinkedHashMap; import java.util.List; @@ -34,11 +39,12 @@ 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.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; +import org.slf4j.LoggerFactory; /** * NOTE: This class is not part of any public api and can be changed or deleted without prior notice. @@ -49,17 +55,20 @@ * @author jdcasey * @author Kristian Rosenvold (extracted class only) */ -@Component(role = LifeCyclePluginAnalyzer.class) +@Singleton +@Named public class DefaultLifecyclePluginAnalyzer implements LifeCyclePluginAnalyzer { - @Requirement(role = LifecycleMapping.class) + private final Logger logger = LoggerFactory.getLogger(getClass()); + + @Inject private Map lifecycleMappings; - @Requirement + @Inject private DefaultLifecycles defaultLifeCycles; - @Requirement - private Logger logger; + @Inject + private PlexusContainer plexusContainer; public DefaultLifecyclePluginAnalyzer() {} @@ -79,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; diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleTaskSegmentCalculator.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleTaskSegmentCalculator.java index 3015b9dd4060..d654f0a450a4 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleTaskSegmentCalculator.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleTaskSegmentCalculator.java @@ -18,6 +18,10 @@ */ package org.apache.maven.lifecycle.internal; +import javax.inject.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -34,8 +38,6 @@ import org.apache.maven.plugin.prefix.NoPluginFoundForPrefixException; import org.apache.maven.plugin.version.PluginVersionResolutionException; import org.apache.maven.project.MavenProject; -import org.codehaus.plexus.component.annotations.Component; -import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.util.StringUtils; /** @@ -50,12 +52,13 @@ * @author jdcasey * @author Kristian Rosenvold (extracted class) */ -@Component(role = LifecycleTaskSegmentCalculator.class) +@Singleton +@Named public class DefaultLifecycleTaskSegmentCalculator implements LifecycleTaskSegmentCalculator { - @Requirement + @Inject private MojoDescriptorCreator mojoDescriptorCreator; - @Requirement + @Inject private LifecyclePluginResolver lifecyclePluginResolver; public DefaultLifecycleTaskSegmentCalculator() {} diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultMojoExecutionConfigurator.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultMojoExecutionConfigurator.java index ca5937f70633..764a0c41233c 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultMojoExecutionConfigurator.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultMojoExecutionConfigurator.java @@ -18,6 +18,10 @@ */ package org.apache.maven.lifecycle.internal; +import javax.inject.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + import java.util.Collection; import java.util.Collections; import java.util.Optional; @@ -35,8 +39,6 @@ import org.apache.maven.plugin.descriptor.Parameter; import org.apache.maven.plugin.descriptor.PluginDescriptor; import org.apache.maven.project.MavenProject; -import org.codehaus.plexus.component.annotations.Component; -import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.util.StringUtils; import org.codehaus.plexus.util.xml.Xpp3Dom; import org.slf4j.Logger; @@ -47,11 +49,12 @@ /** * @since 3.3.1, MNG-5753 */ -@Component(role = MojoExecutionConfigurator.class) +@Singleton +@Named public class DefaultMojoExecutionConfigurator implements MojoExecutionConfigurator { private final Logger logger = LoggerFactory.getLogger(getClass()); - @Requirement + @Inject private MessageBuilderFactory messageBuilderFactory; @Override diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleDebugLogger.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleDebugLogger.java index df46e0f67860..4acd216e0af1 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleDebugLogger.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleDebugLogger.java @@ -18,6 +18,10 @@ */ package org.apache.maven.lifecycle.internal; +import javax.inject.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + import java.util.Iterator; import java.util.List; import java.util.Map; @@ -29,8 +33,6 @@ import org.apache.maven.plugin.MojoExecution; import org.apache.maven.plugin.descriptor.MojoDescriptor; import org.apache.maven.project.MavenProject; -import org.codehaus.plexus.component.annotations.Component; -import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.util.StringUtils; @@ -45,9 +47,10 @@ * @author Jason van Zyl * @author Kristian Rosenvold (extracted class only) */ -@Component(role = LifecycleDebugLogger.class) +@Singleton +@Named public class LifecycleDebugLogger { - @Requirement + @Inject private Logger logger; public LifecycleDebugLogger() {} diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleModuleBuilder.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleModuleBuilder.java index 530eac0341aa..10effac673fd 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleModuleBuilder.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleModuleBuilder.java @@ -18,6 +18,10 @@ */ package org.apache.maven.lifecycle.internal; +import javax.inject.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + import java.util.HashSet; import java.util.List; @@ -31,8 +35,6 @@ import org.apache.maven.lifecycle.internal.builder.BuilderCommon; import org.apache.maven.plugin.MojoExecution; import org.apache.maven.project.MavenProject; -import org.codehaus.plexus.component.annotations.Component; -import org.codehaus.plexus.component.annotations.Requirement; /** *

@@ -45,26 +47,25 @@ * @author Jason van Zyl * @author Kristian Rosenvold (extracted class) */ -@Component(role = LifecycleModuleBuilder.class) +@Singleton +@Named public class LifecycleModuleBuilder { - @Requirement + @Inject private MojoExecutor mojoExecutor; - @Requirement + @Inject private BuilderCommon builderCommon; - @Requirement + @Inject private ExecutionEventCatapult eventCatapult; private ProjectExecutionListener projectExecutionListener; - // this tricks plexus-component-metadata generate required metadata - @Requirement - private List projectExecutionListeners; - + // TODO: this is hack here; old code was tricking plexus to call setter method; to preserve binary compat, not much + // can be done, but marking this + @Inject public void setProjectExecutionListeners(final List listeners) { - this.projectExecutionListeners = listeners; this.projectExecutionListener = new CompoundProjectExecutionListener(listeners); } diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecyclePluginResolver.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecyclePluginResolver.java index 1a1b26bef2f8..d8bfa1e7a4e7 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecyclePluginResolver.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecyclePluginResolver.java @@ -18,6 +18,10 @@ */ package org.apache.maven.lifecycle.internal; +import javax.inject.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + import java.util.HashMap; import java.util.Map; @@ -29,8 +33,6 @@ import org.apache.maven.plugin.version.PluginVersionResolutionException; import org.apache.maven.plugin.version.PluginVersionResolver; import org.apache.maven.project.MavenProject; -import org.codehaus.plexus.component.annotations.Component; -import org.codehaus.plexus.component.annotations.Requirement; /** * NOTE: This class is not part of any public api and can be changed or deleted without prior notice. @@ -38,9 +40,10 @@ * @author Benjamin Bentmann * @author Kristian Rosenvold (Extract class) */ -@Component(role = LifecyclePluginResolver.class) +@Singleton +@Named public class LifecyclePluginResolver { - @Requirement + @Inject private PluginVersionResolver pluginVersionResolver; public LifecyclePluginResolver(PluginVersionResolver pluginVersionResolver) { diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleStarter.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleStarter.java index d7cc334e181c..18337ccdcbc9 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleStarter.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/LifecycleStarter.java @@ -18,6 +18,10 @@ */ package org.apache.maven.lifecycle.internal; +import javax.inject.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + import java.util.List; import java.util.Map; @@ -30,9 +34,8 @@ import org.apache.maven.lifecycle.internal.builder.Builder; import org.apache.maven.lifecycle.internal.builder.BuilderNotFoundException; import org.apache.maven.session.scope.internal.SessionScope; -import org.codehaus.plexus.component.annotations.Component; -import org.codehaus.plexus.component.annotations.Requirement; -import org.codehaus.plexus.logging.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Starts the build life cycle @@ -41,30 +44,30 @@ * @author Benjamin Bentmann * @author Kristian Rosenvold */ -@Component(role = LifecycleStarter.class) +@Singleton +@Named public class LifecycleStarter { - @Requirement + private final Logger logger = LoggerFactory.getLogger(getClass()); + + @Inject private ExecutionEventCatapult eventCatapult; - @Requirement + @Inject private DefaultLifecycles defaultLifeCycles; - @Requirement - private Logger logger; - - @Requirement + @Inject private BuildListCalculator buildListCalculator; - @Requirement + @Inject private LifecycleDebugLogger lifecycleDebugLogger; - @Requirement + @Inject private LifecycleTaskSegmentCalculator lifecycleTaskSegmentCalculator; - @Requirement + @Inject private Map builders; - @Requirement + @Inject private SessionScope sessionScope; public void execute(MavenSession session) { diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoDescriptorCreator.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoDescriptorCreator.java index 582fa6453e4a..a769fa3ca73b 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoDescriptorCreator.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoDescriptorCreator.java @@ -18,6 +18,10 @@ */ package org.apache.maven.lifecycle.internal; +import javax.inject.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + import java.util.ArrayList; import java.util.Collection; import java.util.StringTokenizer; @@ -41,11 +45,10 @@ import org.apache.maven.plugin.version.PluginVersionResolutionException; import org.apache.maven.plugin.version.PluginVersionResolver; import org.apache.maven.project.MavenProject; -import org.codehaus.plexus.component.annotations.Component; -import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.configuration.PlexusConfiguration; -import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.util.xml.Xpp3Dom; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** *

@@ -59,22 +62,21 @@ * @author jdcasey * @author Kristian Rosenvold (extracted class only) */ -@Component(role = MojoDescriptorCreator.class) +@Singleton +@Named public class MojoDescriptorCreator { + private final Logger logger = LoggerFactory.getLogger(getClass()); - @Requirement - private Logger logger; - - @Requirement + @Inject private PluginVersionResolver pluginVersionResolver; - @Requirement + @Inject private BuildPluginManager pluginManager; - @Requirement + @Inject private PluginPrefixResolver pluginPrefixResolver; - @Requirement + @Inject private LifecyclePluginResolver lifecyclePluginResolver; public MojoDescriptorCreator() {} diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoExecutor.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoExecutor.java index 4061820ac652..15c6e117537f 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoExecutor.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/MojoExecutor.java @@ -18,6 +18,10 @@ */ package org.apache.maven.lifecycle.internal; +import javax.inject.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -53,8 +57,6 @@ import org.apache.maven.plugin.descriptor.MojoDescriptor; import org.apache.maven.project.MavenProject; import org.codehaus.plexus.PlexusContainer; -import org.codehaus.plexus.component.annotations.Component; -import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.component.repository.exception.ComponentLookupException; import org.codehaus.plexus.util.StringUtils; import org.eclipse.aether.SessionData; @@ -72,29 +74,30 @@ * @author Kristian Rosenvold * @since 3.0 */ -@Component(role = MojoExecutor.class) +@Singleton +@Named public class MojoExecutor { private static final Logger LOGGER = LoggerFactory.getLogger(MojoExecutor.class); - @Requirement + @Inject private BuildPluginManager pluginManager; - @Requirement + @Inject private MavenPluginManager mavenPluginManager; - @Requirement + @Inject private LifecycleDependencyResolver lifeCycleDependencyResolver; - @Requirement + @Inject private ExecutionEventCatapult eventCatapult; - @Requirement + @Inject private MessageBuilderFactory messageBuilderFactory; private final OwnerReentrantReadWriteLock aggregatorLock = new OwnerReentrantReadWriteLock(); - @Requirement + @Inject private PlexusContainer container; private final Map mojos = new ConcurrentHashMap<>(); diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/BuilderCommon.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/BuilderCommon.java index dfb2cc049033..e4f84b432ba0 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/BuilderCommon.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/BuilderCommon.java @@ -18,6 +18,10 @@ */ package org.apache.maven.lifecycle.internal.builder; +import javax.inject.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + import java.util.Set; import org.apache.maven.artifact.Artifact; @@ -46,8 +50,6 @@ import org.apache.maven.plugin.version.PluginVersionResolutionException; import org.apache.maven.project.MavenProject; import org.codehaus.plexus.classworlds.realm.ClassRealm; -import org.codehaus.plexus.component.annotations.Component; -import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.logging.Logger; /** @@ -58,18 +60,19 @@ * Builds one or more lifecycles for a full module * NOTE: This class is not part of any public api and can be changed or deleted without prior notice. */ -@Component(role = BuilderCommon.class) +@Singleton +@Named public class BuilderCommon { - @Requirement + @Inject private LifecycleDebugLogger lifecycleDebugLogger; - @Requirement + @Inject private LifecycleExecutionPlanCalculator lifeCycleExecutionPlanCalculator; - @Requirement + @Inject private ExecutionEventCatapult eventCatapult; - @Requirement + @Inject private Logger logger; public BuilderCommon() {} diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/multithreaded/MultiThreadedBuilder.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/multithreaded/MultiThreadedBuilder.java index ab7b344dd3f3..85ff2b74962c 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/multithreaded/MultiThreadedBuilder.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/multithreaded/MultiThreadedBuilder.java @@ -18,6 +18,10 @@ */ package org.apache.maven.lifecycle.internal.builder.multithreaded; +import javax.inject.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + import java.util.HashSet; import java.util.List; import java.util.Map; @@ -40,9 +44,8 @@ import org.apache.maven.lifecycle.internal.TaskSegment; import org.apache.maven.lifecycle.internal.builder.Builder; import org.apache.maven.project.MavenProject; -import org.codehaus.plexus.component.annotations.Component; -import org.codehaus.plexus.component.annotations.Requirement; -import org.codehaus.plexus.logging.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Builds the full lifecycle in weave-mode (phase by phase as opposed to project-by-project). @@ -58,13 +61,13 @@ * Builds one or more lifecycles for a full module * NOTE: This class is not part of any public api and can be changed or deleted without prior notice. */ -@Component(role = Builder.class, hint = "multithreaded") +@Singleton +@Named("multithreaded") public class MultiThreadedBuilder implements Builder { - @Requirement - private Logger logger; + private final Logger logger = LoggerFactory.getLogger(getClass()); - @Requirement + @Inject private LifecycleModuleBuilder lifecycleModuleBuilder; public MultiThreadedBuilder() {} diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/singlethreaded/SingleThreadedBuilder.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/singlethreaded/SingleThreadedBuilder.java index aaf55824ae54..d5a859532344 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/singlethreaded/SingleThreadedBuilder.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/singlethreaded/SingleThreadedBuilder.java @@ -18,6 +18,10 @@ */ package org.apache.maven.lifecycle.internal.builder.singlethreaded; +import javax.inject.Inject; +import javax.inject.Named; +import javax.inject.Singleton; + import java.util.List; import org.apache.maven.execution.MavenSession; @@ -28,17 +32,16 @@ import org.apache.maven.lifecycle.internal.ReactorContext; import org.apache.maven.lifecycle.internal.TaskSegment; import org.apache.maven.lifecycle.internal.builder.Builder; -import org.codehaus.plexus.component.annotations.Component; -import org.codehaus.plexus.component.annotations.Requirement; /** *

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