From cf09ca2ebeef318206910d505d309e1aed8a229e Mon Sep 17 00:00:00 2001 From: Guillaume Nodet Date: Wed, 15 Jun 2022 10:43:17 +0200 Subject: [PATCH 1/2] [MNG-7160] Ability to customize core extensions classloaders (#616) --- .mvn/extensions.xml | 24 +++++ .mvn/maven-build-cache-config.xml | 147 ++++++++++++++++++++++++++++++ 2 files changed, 171 insertions(+) create mode 100644 .mvn/extensions.xml create mode 100644 .mvn/maven-build-cache-config.xml diff --git a/.mvn/extensions.xml b/.mvn/extensions.xml new file mode 100644 index 000000000000..7e5ede259055 --- /dev/null +++ b/.mvn/extensions.xml @@ -0,0 +1,24 @@ + + + + + org.apache.maven.extensions + maven-build-cache-extension + 1.0.0-SNAPSHOT + + diff --git a/.mvn/maven-build-cache-config.xml b/.mvn/maven-build-cache-config.xml new file mode 100644 index 000000000000..2f16c7d305c4 --- /dev/null +++ b/.mvn/maven-build-cache-config.xml @@ -0,0 +1,147 @@ + + + + + + + + true + SHA-256 + true + + dav:http://localhost:8080/mbce + + + 3 + + + + + + + + {*.java,*.groovy,*.yaml,*.svcd,*.proto,*assembly.xml,assembly*.xml,*logback.xml,*.vm,*.ini,*.jks,*.properties,*.sh,*.bat} + + + src/ + + + pom.xml + + + + + + + 111 + + + + + + + + + + + + + + + 1 + 2 + + + + + + + + + + + + + + + + + + + + my-execution-id + + + + + + + install + + + + + deploy + + + + + deploy-local + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From d1e03606f3d7514e165e12d398a63167f67b5e2e Mon Sep 17 00:00:00 2001 From: Sylwester Lachiewicz Date: Fri, 24 Jul 2020 01:59:50 +0200 Subject: [PATCH 2/2] [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 c4bddc5f6aea..0f4de7fcde80 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.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.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 DependencyNode resolveCoreExtension( Plugin plugin, DependencyFilter depe 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 DependencyNode resolve( Plugin plugin, Artifact pluginArtifact, Dependenc 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 @@ private DependencyNode resolveInternal( Plugin plugin, Artifact pluginArtifact, 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 16a0b63c08ec..000000000000 --- 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 3159fac6ba57..9bedfd749c2d 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 synchronized ProjectRealmCache.CacheRecord createProjectRealm( MavenProje 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 ); } }