You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by cs...@apache.org on 2021/10/02 13:41:02 UTC
[maven] branch master updated: [MNG-6898] Drop
plexus-component-metadata plugin from maven-core (#554)
This is an automated email from the ASF dual-hosted git repository.
cstamas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven.git
The following commit(s) were added to refs/heads/master by this push:
new af9c64f [MNG-6898] Drop plexus-component-metadata plugin from maven-core (#554)
af9c64f is described below
commit af9c64f80d01c24bdb16fff98b0c328340a977e7
Author: Tamas Cservenak <ta...@cservenak.net>
AuthorDate: Sat Oct 2 15:40:58 2021 +0200
[MNG-6898] Drop plexus-component-metadata plugin from maven-core (#554)
Now that Plexus XMLs (and components) are out, no need
for this plugin in maven-core module anymore.
Changes:
* convert DefaultLifecyclePluginAnalyzer to JSR330 (last plexus component in core)
* drop dependency on plexus-component-annotations (note: it is still there but only as transitive dep of plexus-shim, needed to boot up Plexus Shim in tests)
* remove plexus-component-metadata plugin from build
* drop unused test Plexus XML
---
maven-core/pom.xml | 8 --
.../internal/DefaultLifecyclePluginAnalyzer.java | 54 ++++++++---
.../test/resources/META-INF/plexus/components.xml | 107 ---------------------
3 files changed, 43 insertions(+), 126 deletions(-)
diff --git a/maven-core/pom.xml b/maven-core/pom.xml
index 1ff00fa..dd1b72b 100644
--- a/maven-core/pom.xml
+++ b/maven-core/pom.xml
@@ -135,10 +135,6 @@ under the License.
<artifactId>plexus-interpolation</artifactId>
</dependency>
<dependency>
- <groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-component-annotations</artifactId>
- </dependency>
- <dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
@@ -208,10 +204,6 @@ under the License.
</pluginManagement>
<plugins>
<plugin>
- <groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-component-metadata</artifactId>
- </plugin>
- <plugin>
<groupId>org.eclipse.sisu</groupId>
<artifactId>sisu-maven-plugin</artifactId>
</plugin>
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 f1bb442..5941152 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
@@ -25,6 +25,7 @@ import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.NoSuchElementException;
import java.util.Set;
import org.apache.maven.lifecycle.DefaultLifecycles;
@@ -37,12 +38,18 @@ import org.apache.maven.model.InputLocation;
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.PlexusContainer;
+import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.xml.Xpp3Dom;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+import static java.util.Objects.requireNonNull;
+
/**
* <strong>NOTE:</strong> This class is not part of any public api and can be changed or deleted without prior notice.
*
@@ -52,24 +59,28 @@ import org.codehaus.plexus.util.xml.Xpp3Dom;
* @author jdcasey
* @author Kristian Rosenvold (extracted class only)
*/
-@Component( role = LifeCyclePluginAnalyzer.class )
+@Singleton
+@Named
public class DefaultLifecyclePluginAnalyzer
implements LifeCyclePluginAnalyzer
{
public static final String DEFAULTLIFECYCLEBINDINGS_MODELID = "org.apache.maven:maven-core:"
+ DefaultLifecyclePluginAnalyzer.class.getPackage().getImplementationVersion() + ":default-lifecycle-bindings";
- @Requirement( role = LifecycleMapping.class )
- private Map<String, LifecycleMapping> lifecycleMappings;
+ private final PlexusContainer plexusContainer;
- @Requirement
- private DefaultLifecycles defaultLifeCycles;
+ private final DefaultLifecycles defaultLifeCycles;
- @Requirement
- private Logger logger;
+ private final Logger logger;
- public DefaultLifecyclePluginAnalyzer()
+ @Inject
+ public DefaultLifecyclePluginAnalyzer( final PlexusContainer plexusContainer,
+ final DefaultLifecycles defaultLifeCycles,
+ final Logger logger )
{
+ this.plexusContainer = requireNonNull( plexusContainer );
+ this.defaultLifeCycles = requireNonNull( defaultLifeCycles );
+ this.logger = requireNonNull( logger );
}
// These methods deal with construction intact Plugin object that look like they come from a standard
@@ -82,6 +93,7 @@ public class DefaultLifecyclePluginAnalyzer
// from the plugin.xml inside a plugin.
//
+ @Override
public Set<Plugin> getPluginsBoundByDefaultToAllLifecycles( String packaging )
{
if ( logger.isDebugEnabled() )
@@ -90,7 +102,7 @@ public class DefaultLifecyclePluginAnalyzer
+ Thread.currentThread().getContextClassLoader() );
}
- LifecycleMapping lifecycleMappingForPackaging = lifecycleMappings.get( packaging );
+ LifecycleMapping lifecycleMappingForPackaging = lookupLifecycleMapping( packaging );
if ( lifecycleMappingForPackaging == null )
{
@@ -132,6 +144,26 @@ public class DefaultLifecyclePluginAnalyzer
return plugins.keySet();
}
+ /**
+ * Performs a lookup using Plexus API to make sure we can look up only "visible" (see Maven classloading) components
+ * from current module and for example not extensions coming from other modules.
+ */
+ private LifecycleMapping lookupLifecycleMapping( final String packaging )
+ {
+ try
+ {
+ return plexusContainer.lookup( LifecycleMapping.class, packaging );
+ }
+ catch ( ComponentLookupException e )
+ {
+ if ( e.getCause() instanceof NoSuchElementException )
+ {
+ return null;
+ }
+ throw new RuntimeException( e );
+ }
+ }
+
private List<Lifecycle> getOrderedLifecycles()
{
// NOTE: The lifecycle order can affect implied execution ids so we better be deterministic.
diff --git a/maven-core/src/test/resources/META-INF/plexus/components.xml b/maven-core/src/test/resources/META-INF/plexus/components.xml
deleted file mode 100644
index 6aa5a06..0000000
--- a/maven-core/src/test/resources/META-INF/plexus/components.xml
+++ /dev/null
@@ -1,107 +0,0 @@
-<component-set>
- <components>
- <component>
- <role>org.apache.maven.lifecycle.binding.LegacyLifecycleParsingTestComponent</role>
- <role-hint>default</role-hint>
- <implementation>org.apache.maven.lifecycle.binding.LegacyLifecycleParsingTestComponent</implementation>
- <configuration>
- <lifecycles>
- <lifecycle>
- <id>default</id>
- <phases>
- <phase>validate</phase>
- <phase>initialize</phase>
- <phase>generate-sources</phase>
- <phase>process-sources</phase>
- <phase>generate-resources</phase>
- <phase>process-resources</phase>
- <phase>compile</phase>
- <phase>process-classes</phase>
- <phase>generate-test-sources</phase>
- <phase>process-test-sources</phase>
- <phase>generate-test-resources</phase>
- <phase>process-test-resources</phase>
- <phase>test-compile</phase>
- <phase>process-test-classes</phase>
- <phase>test</phase>
- <phase>prepare-package</phase>
- <phase>package</phase>
- <phase>pre-integration-test</phase>
- <phase>integration-test</phase>
- <phase>post-integration-test</phase>
- <phase>verify</phase>
- <phase>install</phase>
- <phase>deploy</phase>
- </phases>
- </lifecycle>
- <lifecycle>
- <id>clean</id>
- <phases>
- <phase>pre-clean</phase>
- <phase>clean</phase>
- <phase>post-clean</phase>
- </phases>
- <default-phases>
- <clean>org.apache.maven.plugins:maven-clean-plugin:clean</clean>
- </default-phases>
- </lifecycle>
- <lifecycle>
- <id>site</id>
- <phases>
- <phase>pre-site</phase>
- <phase>site</phase>
- <phase>post-site</phase>
- <phase>site-deploy</phase>
- </phases>
- <default-phases>
- <site>org.apache.maven.plugins:maven-site-plugin:site</site>
- <site-deploy>org.apache.maven.plugins:maven-site-plugin:deploy</site-deploy>
- </default-phases>
- </lifecycle>
- </lifecycles>
- </configuration>
- </component>
- <component>
- <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
- <role-hint>test-mapping</role-hint>
- <implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
- <configuration>
- <lifecycles>
- <lifecycle>
- <id>default</id>
- <!-- START SNIPPET: pom-lifecycle -->
-
- <phases>
- <package>org.apache.maven.plugins:maven-site-plugin:attach-descriptor</package>
- <install>org.apache.maven.plugins:maven-install-plugin:install</install>
- <deploy>org.apache.maven.plugins:maven-deploy-plugin:deploy</deploy>
- </phases>
- <!-- END SNIPPET: pom-lifecycle -->
- </lifecycle>
- </lifecycles>
- </configuration>
- </component>
- <component>
- <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
- <role-hint>test-mapping2</role-hint>
- <implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
- <configuration>
- <lifecycles>
- <lifecycle>
- <id>default</id>
- <!-- START SNIPPET: pom-lifecycle -->
- <phases>
- <package>
- org.apache.maven.plugins:maven-site-plugin:attach-descriptor,
- org.apache.maven.plugins:maven-clean-plugin:clean
- </package>
- <install>org.apache.maven.plugins:maven-install-plugin:install</install>
- <deploy>org.apache.maven.plugins:maven-deploy-plugin:deploy</deploy>
- </phases>
- <!-- END SNIPPET: pom-lifecycle -->
- </lifecycle>
- </lifecycles>
- </configuration>
- </component>
- </components>
-</component-set>