mirror of
https://github.com/apache/maven.git
synced 2025-02-08 19:15:12 +00:00
[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
ecfff2626c
commit
c61e63032f
@ -43,7 +43,6 @@
|
|||||||
import org.eclipse.aether.artifact.DefaultArtifact;
|
import org.eclipse.aether.artifact.DefaultArtifact;
|
||||||
import org.eclipse.aether.collection.CollectRequest;
|
import org.eclipse.aether.collection.CollectRequest;
|
||||||
import org.eclipse.aether.collection.DependencyCollectionException;
|
import org.eclipse.aether.collection.DependencyCollectionException;
|
||||||
import org.eclipse.aether.collection.DependencyGraphTransformer;
|
|
||||||
import org.eclipse.aether.collection.DependencySelector;
|
import org.eclipse.aether.collection.DependencySelector;
|
||||||
import org.eclipse.aether.graph.DependencyFilter;
|
import org.eclipse.aether.graph.DependencyFilter;
|
||||||
import org.eclipse.aether.graph.DependencyNode;
|
import org.eclipse.aether.graph.DependencyNode;
|
||||||
@ -61,7 +60,6 @@
|
|||||||
import org.eclipse.aether.util.filter.ScopeDependencyFilter;
|
import org.eclipse.aether.util.filter.ScopeDependencyFilter;
|
||||||
import org.eclipse.aether.util.graph.manager.DependencyManagerUtils;
|
import org.eclipse.aether.util.graph.manager.DependencyManagerUtils;
|
||||||
import org.eclipse.aether.util.graph.selector.AndDependencySelector;
|
import org.eclipse.aether.util.graph.selector.AndDependencySelector;
|
||||||
import org.eclipse.aether.util.graph.transformer.ChainedDependencyGraphTransformer;
|
|
||||||
import org.eclipse.aether.util.repository.SimpleArtifactDescriptorPolicy;
|
import org.eclipse.aether.util.repository.SimpleArtifactDescriptorPolicy;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -145,7 +143,7 @@ public DependencyNode resolveCoreExtension( Plugin plugin, DependencyFilter depe
|
|||||||
List<RemoteRepository> repositories, RepositorySystemSession session )
|
List<RemoteRepository> repositories, RepositorySystemSession session )
|
||||||
throws PluginResolutionException
|
throws PluginResolutionException
|
||||||
{
|
{
|
||||||
return resolveInternal( plugin, null /* pluginArtifact */, dependencyFilter, null /* transformer */,
|
return resolveInternal( plugin, null /* pluginArtifact */, dependencyFilter,
|
||||||
repositories, session );
|
repositories, session );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -153,12 +151,11 @@ public DependencyNode resolve( Plugin plugin, Artifact pluginArtifact, Dependenc
|
|||||||
List<RemoteRepository> repositories, RepositorySystemSession session )
|
List<RemoteRepository> repositories, RepositorySystemSession session )
|
||||||
throws PluginResolutionException
|
throws PluginResolutionException
|
||||||
{
|
{
|
||||||
return resolveInternal( plugin, pluginArtifact, dependencyFilter, new PlexusUtilsInjector(), repositories,
|
return resolveInternal( plugin, pluginArtifact, dependencyFilter, repositories,
|
||||||
session );
|
session );
|
||||||
}
|
}
|
||||||
|
|
||||||
private DependencyNode resolveInternal( Plugin plugin, Artifact pluginArtifact, DependencyFilter dependencyFilter,
|
private DependencyNode resolveInternal( Plugin plugin, Artifact pluginArtifact, DependencyFilter dependencyFilter,
|
||||||
DependencyGraphTransformer transformer,
|
|
||||||
List<RemoteRepository> repositories, RepositorySystemSession session )
|
List<RemoteRepository> repositories, RepositorySystemSession session )
|
||||||
throws PluginResolutionException
|
throws PluginResolutionException
|
||||||
{
|
{
|
||||||
@ -179,12 +176,9 @@ private DependencyNode resolveInternal( Plugin plugin, Artifact pluginArtifact,
|
|||||||
DependencySelector selector =
|
DependencySelector selector =
|
||||||
AndDependencySelector.newInstance( session.getDependencySelector(), new WagonExcluder() );
|
AndDependencySelector.newInstance( session.getDependencySelector(), new WagonExcluder() );
|
||||||
|
|
||||||
transformer =
|
|
||||||
ChainedDependencyGraphTransformer.newInstance( session.getDependencyGraphTransformer(), transformer );
|
|
||||||
|
|
||||||
DefaultRepositorySystemSession pluginSession = new DefaultRepositorySystemSession( session );
|
DefaultRepositorySystemSession pluginSession = new DefaultRepositorySystemSession( session );
|
||||||
pluginSession.setDependencySelector( selector );
|
pluginSession.setDependencySelector( selector );
|
||||||
pluginSession.setDependencyGraphTransformer( transformer );
|
pluginSession.setDependencyGraphTransformer( session.getDependencyGraphTransformer() );
|
||||||
|
|
||||||
CollectRequest request = new CollectRequest();
|
CollectRequest request = new CollectRequest();
|
||||||
request.setRequestContext( REPOSITORY_CONTEXT );
|
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -210,15 +210,14 @@ public synchronized ProjectRealmCache.CacheRecord createProjectRealm( MavenProje
|
|||||||
exportedArtifacts.put( extensionRealm, extensionDescriptor.getExportedArtifacts() );
|
exportedArtifacts.put( extensionRealm, extensionDescriptor.getExportedArtifacts() );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !plugin.isExtensions() && artifacts.size() == 2 && artifacts.get( 0 ).getFile() != null
|
if ( !plugin.isExtensions() && artifacts.size() == 1 && artifacts.get( 0 ).getFile() != null )
|
||||||
&& "plexus-utils".equals( artifacts.get( 1 ).getArtifactId() ) )
|
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* This is purely for backward-compat with 2.x where <extensions> consisting of a single artifact where
|
* 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 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).
|
* loaded into a dedicated realm which is invisible to plugins (MNG-2749).
|
||||||
*/
|
*/
|
||||||
publicArtifacts.add( artifacts.get( 0 ) );
|
publicArtifacts.addAll( artifacts );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user