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 709bd7218264..d31ba3596f90 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 @@ -43,7 +43,6 @@ import org.eclipse.aether.artifact.DefaultArtifact; import org.eclipse.aether.collection.CollectRequest; import org.eclipse.aether.collection.DependencyCollectionException; -import org.eclipse.aether.collection.DependencySelector; import org.eclipse.aether.graph.DependencyFilter; import org.eclipse.aether.graph.DependencyNode; import org.eclipse.aether.graph.DependencyVisitor; @@ -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.repository.SimpleArtifactDescriptorPolicy; /** @@ -173,11 +171,8 @@ private DependencyNode resolveInternal( Plugin plugin, Artifact pluginArtifact, try { - DependencySelector selector = - AndDependencySelector.newInstance( session.getDependencySelector(), new WagonExcluder() ); - DefaultRepositorySystemSession pluginSession = new DefaultRepositorySystemSession( session ); - pluginSession.setDependencySelector( selector ); + pluginSession.setDependencySelector( session.getDependencySelector() ); pluginSession.setDependencyGraphTransformer( session.getDependencyGraphTransformer() ); CollectRequest request = new CollectRequest(); diff --git a/maven-core/src/main/java/org/apache/maven/plugin/internal/PluginDependencyResolutionListener.java b/maven-core/src/main/java/org/apache/maven/plugin/internal/PluginDependencyResolutionListener.java deleted file mode 100644 index 42eb80ed8c01..000000000000 --- a/maven-core/src/main/java/org/apache/maven/plugin/internal/PluginDependencyResolutionListener.java +++ /dev/null @@ -1,150 +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 java.util.Collection; -import java.util.IdentityHashMap; -import java.util.LinkedList; -import java.util.Map; - -import org.apache.maven.artifact.Artifact; -import org.apache.maven.artifact.resolver.ResolutionListener; -import org.apache.maven.artifact.resolver.filter.ArtifactFilter; -import org.apache.maven.artifact.versioning.VersionRange; - -/** - * Assists in detecting wagon providers brought into the plugin class path via legacy Maven core artifacts (e.g. - * maven-core:2.0.6) and excluding them. A plugin should be able to explicitly declare dependencies on specific wagons - * for its use. However, the (old) wagons pulled in transitively via legacy Maven core artifacts are usually not - * intended as dependencies and more importantly screw up artifact resolution because they would get preferred over the - * core wagon versions. This is a hack to provide backward-compat with Maven 2 (MNG-4528, MNG-4561). - * - * @since 3.0 - * @author Benjamin Bentmann - */ -class PluginDependencyResolutionListener - implements ResolutionListener -{ - - private ArtifactFilter coreFilter; - - private LinkedList coreArtifacts = new LinkedList<>(); - - private Artifact wagonProvider; - - private Map bannedArtifacts = new IdentityHashMap<>(); - - PluginDependencyResolutionListener( ArtifactFilter coreFilter ) - { - this.coreFilter = coreFilter; - } - - public void removeBannedDependencies( Collection artifacts ) - { - if ( !bannedArtifacts.isEmpty() && artifacts != null ) - { - artifacts.removeIf( artifact -> bannedArtifacts.containsKey( artifact ) ); - } - } - - public void startProcessChildren( Artifact artifact ) - { - if ( wagonProvider == null ) - { - if ( isLegacyCoreArtifact( artifact ) ) - { - coreArtifacts.addFirst( artifact ); - } - else if ( !coreArtifacts.isEmpty() && isWagonProvider( artifact ) ) - { - wagonProvider = artifact; - bannedArtifacts.put( artifact, null ); - } - } - } - - private boolean isLegacyCoreArtifact( Artifact artifact ) - { - String version = artifact.getVersion(); - return version != null && version.startsWith( "2." ) && !coreFilter.include( artifact ); - } - - public void endProcessChildren( Artifact artifact ) - { - if ( wagonProvider == artifact ) - { - wagonProvider = null; - } - else if ( coreArtifacts.peek() == artifact ) - { - coreArtifacts.removeFirst(); - } - } - - public void includeArtifact( Artifact artifact ) - { - if ( wagonProvider != null ) - { - bannedArtifacts.put( artifact, null ); - } - } - - private boolean isWagonProvider( Artifact artifact ) - { - if ( "org.apache.maven.wagon".equals( artifact.getGroupId() ) ) - { - return artifact.getArtifactId().startsWith( "wagon-" ); - } - return false; - } - - public void manageArtifact( Artifact artifact, Artifact replacement ) - { - } - - public void omitForCycle( Artifact artifact ) - { - } - - public void omitForNearer( Artifact omitted, Artifact kept ) - { - } - - public void restrictRange( Artifact artifact, Artifact replacement, VersionRange newRange ) - { - } - - public void selectVersionFromRange( Artifact artifact ) - { - } - - public void testArtifact( Artifact node ) - { - } - - public void updateScope( Artifact artifact, String scope ) - { - } - - public void updateScopeCurrentPom( Artifact artifact, String ignoredScope ) - { - } - -} diff --git a/maven-core/src/main/java/org/apache/maven/plugin/internal/WagonExcluder.java b/maven-core/src/main/java/org/apache/maven/plugin/internal/WagonExcluder.java deleted file mode 100644 index d374cab9a549..000000000000 --- a/maven-core/src/main/java/org/apache/maven/plugin/internal/WagonExcluder.java +++ /dev/null @@ -1,109 +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.artifact.Artifact; -import org.eclipse.aether.collection.DependencyCollectionContext; -import org.eclipse.aether.collection.DependencySelector; -import org.eclipse.aether.graph.Dependency; - -/** - * Assists in detecting wagon providers brought into the plugin class path via legacy Maven core artifacts (e.g. - * maven-core:2.0.6) and excluding them. A plugin should be able to explicitly declare dependencies on specific wagons - * for its use. However, the (old) wagons pulled in transitively via legacy Maven core artifacts are usually not - * intended as dependencies and more importantly screw up artifact resolution because they would get preferred over the - * core wagon versions. This is a hack to provide backward-compat with Maven 2 (MNG-4528, MNG-4561). - * - * @author Benjamin Bentmann - */ -class WagonExcluder - implements DependencySelector -{ - - private final boolean coreArtifact; - - WagonExcluder() - { - this( false ); - } - - private WagonExcluder( boolean coreArtifact ) - { - this.coreArtifact = coreArtifact; - } - - public boolean selectDependency( Dependency dependency ) - { - return !coreArtifact || !isWagonProvider( dependency.getArtifact() ); - } - - public DependencySelector deriveChildSelector( DependencyCollectionContext context ) - { - if ( coreArtifact || !isLegacyCoreArtifact( context.getDependency().getArtifact() ) ) - { - return this; - } - else - { - return new WagonExcluder( true ); - } - } - - private boolean isLegacyCoreArtifact( Artifact artifact ) - { - String version = artifact.getVersion(); - return version != null && version.startsWith( "2." ) && artifact.getArtifactId().startsWith( "maven-" ) - && artifact.getGroupId().equals( "org.apache.maven" ); - } - - private boolean isWagonProvider( Artifact artifact ) - { - if ( "org.apache.maven.wagon".equals( artifact.getGroupId() ) ) - { - return artifact.getArtifactId().startsWith( "wagon-" ); - } - return false; - } - - @Override - public boolean equals( Object obj ) - { - if ( obj == this ) - { - return true; - } - else if ( obj == null || !getClass().equals( obj.getClass() ) ) - { - return false; - } - - WagonExcluder that = (WagonExcluder) obj; - return coreArtifact == that.coreArtifact; - } - - @Override - public int hashCode() - { - int hash = getClass().hashCode(); - hash = hash * 31 + ( coreArtifact ? 1 : 0 ); - return hash; - } - -}