From e4f347ed8519ca9515ab1f9a0a6d4c3a7a86ef30 Mon Sep 17 00:00:00 2001 From: Sylwester Lachiewicz Date: Fri, 24 Jul 2020 01:59:50 +0200 Subject: [PATCH] [MNG-6965] Extensions suddenly have org.codehaus.plexus:plexus-utils:jar:1.1 on their classpath This closes #367 --- .../DefaultPluginDependenciesResolver.java | 12 +-- .../plugin/internal/PlexusUtilsInjector.java | 87 ------------------- .../project/DefaultProjectBuildingHelper.java | 5 +- 3 files changed, 5 insertions(+), 99 deletions(-) delete mode 100644 maven-core/src/main/java/org/apache/maven/plugin/internal/PlexusUtilsInjector.java 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 c4bddc5f6a..0f4de7fcde 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 @@ -41,7 +41,6 @@ import org.eclipse.aether.artifact.Artifact; import org.eclipse.aether.artifact.DefaultArtifact; import org.eclipse.aether.collection.CollectRequest; import org.eclipse.aether.collection.DependencyCollectionException; -import org.eclipse.aether.collection.DependencyGraphTransformer; import org.eclipse.aether.collection.DependencySelector; import org.eclipse.aether.graph.DependencyFilter; import org.eclipse.aether.graph.DependencyNode; @@ -59,7 +58,6 @@ import org.eclipse.aether.util.filter.AndDependencyFilter; import org.eclipse.aether.util.filter.ScopeDependencyFilter; import org.eclipse.aether.util.graph.manager.DependencyManagerUtils; import org.eclipse.aether.util.graph.selector.AndDependencySelector; -import org.eclipse.aether.util.graph.transformer.ChainedDependencyGraphTransformer; import org.eclipse.aether.util.repository.SimpleArtifactDescriptorPolicy; /** @@ -154,7 +152,7 @@ public class DefaultPluginDependenciesResolver List repositories, RepositorySystemSession session ) throws PluginResolutionException { - return resolveInternal( plugin, null /* pluginArtifact */, dependencyFilter, null /* transformer */, + return resolveInternal( plugin, null /* pluginArtifact */, dependencyFilter, repositories, session ); } @@ -162,12 +160,11 @@ public class DefaultPluginDependenciesResolver List repositories, RepositorySystemSession session ) throws PluginResolutionException { - return resolveInternal( plugin, pluginArtifact, dependencyFilter, new PlexusUtilsInjector(), repositories, + return resolveInternal( plugin, pluginArtifact, dependencyFilter, repositories, session ); } private DependencyNode resolveInternal( Plugin plugin, Artifact pluginArtifact, DependencyFilter dependencyFilter, - DependencyGraphTransformer transformer, List repositories, RepositorySystemSession session ) throws PluginResolutionException { @@ -188,12 +185,9 @@ public class DefaultPluginDependenciesResolver DependencySelector selector = AndDependencySelector.newInstance( session.getDependencySelector(), new WagonExcluder() ); - transformer = - ChainedDependencyGraphTransformer.newInstance( session.getDependencyGraphTransformer(), transformer ); - DefaultRepositorySystemSession pluginSession = new DefaultRepositorySystemSession( session ); pluginSession.setDependencySelector( selector ); - pluginSession.setDependencyGraphTransformer( transformer ); + pluginSession.setDependencyGraphTransformer( session.getDependencyGraphTransformer() ); CollectRequest request = new CollectRequest(); request.setRequestContext( REPOSITORY_CONTEXT ); diff --git a/maven-core/src/main/java/org/apache/maven/plugin/internal/PlexusUtilsInjector.java b/maven-core/src/main/java/org/apache/maven/plugin/internal/PlexusUtilsInjector.java deleted file mode 100644 index 16a0b63c08..0000000000 --- a/maven-core/src/main/java/org/apache/maven/plugin/internal/PlexusUtilsInjector.java +++ /dev/null @@ -1,87 +0,0 @@ -package org.apache.maven.plugin.internal; - -/* - * 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. - */ - -import org.eclipse.aether.RepositoryException; -import org.eclipse.aether.artifact.Artifact; -import org.eclipse.aether.artifact.DefaultArtifact; -import org.eclipse.aether.collection.DependencyGraphTransformationContext; -import org.eclipse.aether.collection.DependencyGraphTransformer; -import org.eclipse.aether.graph.DefaultDependencyNode; -import org.eclipse.aether.graph.Dependency; -import org.eclipse.aether.graph.DependencyNode; -import org.eclipse.aether.util.artifact.JavaScopes; - -/** - * Injects plexus-utils:1.1 into a plugin's class path if it doesn't already declare a dependency on plexus-utils. This - * is another legacy bit to provide backward-compat with Maven 2.x. - * - * @author Benjamin Bentmann - */ -class PlexusUtilsInjector - implements DependencyGraphTransformer -{ - - private static final String GID = "org.codehaus.plexus"; - - private static final String AID = "plexus-utils"; - - private static final String VER = "1.1"; - - private static final String EXT = "jar"; - - public DependencyNode transformGraph( DependencyNode node, DependencyGraphTransformationContext context ) - throws RepositoryException - { - if ( findPlexusUtils( node ) == null ) - { - Artifact pu = new DefaultArtifact( GID, AID, null, EXT, VER ); - DefaultDependencyNode child = new DefaultDependencyNode( new Dependency( pu, JavaScopes.RUNTIME ) ); - child.setRepositories( node.getRepositories() ); - child.setRequestContext( node.getRequestContext() ); - node.getChildren().add( child ); - } - - return node; - } - - private DependencyNode findPlexusUtils( DependencyNode node ) - { - Artifact artifact = node.getDependency().getArtifact(); - - if ( AID.equals( artifact.getArtifactId() ) && GID.equals( artifact.getGroupId() ) - && EXT.equals( artifact.getExtension() ) && "".equals( artifact.getClassifier() ) ) - { - return node; - } - - for ( DependencyNode child : node.getChildren() ) - { - DependencyNode result = findPlexusUtils( child ); - if ( result != null ) - { - return result; - } - } - - return null; - } - -} 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 3159fac6ba..9bedfd749c 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 @@ -207,15 +207,14 @@ public class DefaultProjectBuildingHelper exportedArtifacts.put( extensionRealm, extensionDescriptor.getExportedArtifacts() ); } - if ( !plugin.isExtensions() && artifacts.size() == 2 && artifacts.get( 0 ).getFile() != null - && "plexus-utils".equals( artifacts.get( 1 ).getArtifactId() ) ) + if ( !plugin.isExtensions() && artifacts.size() == 1 && artifacts.get( 0 ).getFile() != null ) { /* * This is purely for backward-compat with 2.x where consisting of a single artifact where * loaded into the core and hence available to plugins, in contrast to bigger extensions that were * loaded into a dedicated realm which is invisible to plugins (MNG-2749). */ - publicArtifacts.add( artifacts.get( 0 ) ); + publicArtifacts.addAll( artifacts ); } }