mirror of https://github.com/apache/maven.git
[MNG-6965] Extensions suddenly have org.codehaus.plexus:plexus-utils:jar:1.1 on their classpath
This closes #367
This commit is contained in:
parent
b3e7e57e4b
commit
e4f347ed85
|
@ -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<RemoteRepository> 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<RemoteRepository> 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<RemoteRepository> 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 );
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
|
@ -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 <extensions> 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 );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue