You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/11/18 15:53:55 UTC
svn commit: r881793 - in
/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin: ./
internal/
Author: bentmann
Date: Wed Nov 18 14:53:55 2009
New Revision: 881793
URL: http://svn.apache.org/viewvc?rev=881793&view=rev
Log:
o Extended base plugin manager to allow for caller-supplied exclusions of certain plugin dependencies
Modified:
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginManager.java
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginRealmCache.java
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginManager.java
Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java?rev=881793&r1=881792&r2=881793&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java Wed Nov 18 14:53:55 2009
@@ -182,7 +182,7 @@
}
mavenPluginManager.setupPluginRealm( pluginDescriptor, session, session.getCurrentProject().getClassRealm(),
- null );
+ null, null );
return pluginDescriptor.getClassRealm();
}
Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java?rev=881793&r1=881792&r2=881793&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java Wed Nov 18 14:53:55 2009
@@ -28,6 +28,7 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Exclusion;
import org.apache.maven.model.Plugin;
@@ -53,9 +54,12 @@
private final List<String> parentImports;
+ private final ArtifactFilter filter;
+
private final int hashCode;
- public CacheKey( Plugin plugin, ClassLoader parentRealm, List<String> parentImports, ArtifactRepository localRepository,
+ public CacheKey( Plugin plugin, ClassLoader parentRealm, List<String> parentImports,
+ ArtifactFilter dependencyFilter, ArtifactRepository localRepository,
List<ArtifactRepository> remoteRepositories )
{
this.plugin = plugin.clone();
@@ -63,12 +67,14 @@
this.repositories.addAll( remoteRepositories );
this.parentRealm = parentRealm;
this.parentImports = ( parentImports != null ) ? parentImports : Collections.<String> emptyList();
+ this.filter = dependencyFilter;
int hash = 17;
hash = hash * 31 + pluginHashCode( plugin );
hash = hash * 31 + repositories.hashCode();
hash = hash * 31 + ( parentRealm != null ? parentRealm.hashCode() : 0 );
hash = hash * 31 + this.parentImports.hashCode();
+ hash = hash * 31 + ( dependencyFilter != null ? dependencyFilter.hashCode() : 0 );
this.hashCode = hash;
}
@@ -94,19 +100,22 @@
CacheKey other = (CacheKey) o;
return parentRealm == other.parentRealm && pluginEquals( plugin, other.plugin )
- && eq( repositories, other.repositories );
+ && eq( repositories, other.repositories ) && eq( filter, other.filter )
+ && eq( parentImports, other.parentImports );
}
}
protected final Map<CacheKey, CacheRecord> cache = new HashMap<CacheKey, CacheRecord>();
public CacheRecord get( Plugin plugin, ClassLoader parentRealm, List<String> parentImports,
- ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories )
+ ArtifactFilter dependencyFilter, ArtifactRepository localRepository,
+ List<ArtifactRepository> remoteRepositories )
{
- return cache.get( new CacheKey( plugin, parentRealm, parentImports, localRepository, remoteRepositories ) );
+ return cache.get( new CacheKey( plugin, parentRealm, parentImports, dependencyFilter, localRepository,
+ remoteRepositories ) );
}
- public CacheRecord put( Plugin plugin, ClassLoader parentRealm, List<String> parentImports,
+ public CacheRecord put( Plugin plugin, ClassLoader parentRealm, List<String> parentImports,ArtifactFilter dependencyFilter,
ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories,
ClassRealm pluginRealm, List<Artifact> pluginArtifacts )
{
@@ -115,7 +124,8 @@
throw new NullPointerException();
}
- CacheKey key = new CacheKey( plugin, parentRealm, parentImports, localRepository, remoteRepositories );
+ CacheKey key =
+ new CacheKey( plugin, parentRealm, parentImports, dependencyFilter, localRepository, remoteRepositories );
if ( cache.containsKey( key ) )
{
Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginManager.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginManager.java?rev=881793&r1=881792&r2=881793&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginManager.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginManager.java Wed Nov 18 14:53:55 2009
@@ -22,6 +22,7 @@
import java.util.List;
import org.apache.maven.artifact.repository.RepositoryRequest;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.Plugin;
import org.apache.maven.plugin.descriptor.MojoDescriptor;
@@ -71,9 +72,10 @@
* {@code null}.
* @param parent The parent class realm for the plugin, may be {@code null} to use the Maven core realm.
* @param imports The packages/types to import from the parent realm, may be {@code null}.
+ * @param filter The filter used to exclude certain plugin dependencies, may be {@code null}.
*/
void setupPluginRealm( PluginDescriptor pluginDescriptor, MavenSession session, ClassLoader parent,
- List<String> imports )
+ List<String> imports, ArtifactFilter filter )
throws PluginResolutionException, PluginContainerException;
/**
Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginRealmCache.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginRealmCache.java?rev=881793&r1=881792&r2=881793&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginRealmCache.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginRealmCache.java Wed Nov 18 14:53:55 2009
@@ -23,6 +23,7 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.model.Plugin;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.classworlds.realm.ClassRealm;
@@ -51,11 +52,12 @@
}
CacheRecord get( Plugin plugin, ClassLoader parentRealm, List<String> parentImports,
- ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories );
+ ArtifactFilter dependencyFilter, ArtifactRepository localRepository,
+ List<ArtifactRepository> remoteRepositories );
CacheRecord put( Plugin plugin, ClassLoader parentRealm, List<String> parentImports,
- ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories,
- ClassRealm pluginRealm, List<Artifact> pluginArtifacts );
+ ArtifactFilter dependencyFilter, ArtifactRepository localRepository,
+ List<ArtifactRepository> remoteRepositories, ClassRealm pluginRealm, List<Artifact> pluginArtifacts );
void flush();
Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java?rev=881793&r1=881792&r2=881793&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java Wed Nov 18 14:53:55 2009
@@ -290,7 +290,7 @@
}
public synchronized void setupPluginRealm( PluginDescriptor pluginDescriptor, MavenSession session,
- ClassLoader parent, List<String> imports )
+ ClassLoader parent, List<String> imports, ArtifactFilter filter )
throws PluginResolutionException, PluginContainerException
{
Plugin plugin = pluginDescriptor.getPlugin();
@@ -298,7 +298,7 @@
MavenProject project = session.getCurrentProject();
PluginRealmCache.CacheRecord cacheRecord =
- pluginRealmCache.get( plugin, parent, imports, session.getLocalRepository(),
+ pluginRealmCache.get( plugin, parent, imports, filter, session.getLocalRepository(),
project.getPluginArtifactRepositories() );
if ( cacheRecord != null )
@@ -308,10 +308,10 @@
}
else
{
- createPluginRealm( pluginDescriptor, session, parent, imports );
+ createPluginRealm( pluginDescriptor, session, parent, imports, filter );
cacheRecord =
- pluginRealmCache.put( plugin, parent, imports, session.getLocalRepository(),
+ pluginRealmCache.put( plugin, parent, imports, filter, session.getLocalRepository(),
project.getPluginArtifactRepositories(), pluginDescriptor.getClassRealm(),
pluginDescriptor.getArtifacts() );
}
@@ -320,7 +320,7 @@
}
private void createPluginRealm( PluginDescriptor pluginDescriptor, MavenSession session, ClassLoader parent,
- List<String> imports )
+ List<String> imports, ArtifactFilter filter )
throws PluginResolutionException, PluginContainerException
{
Plugin plugin = pluginDescriptor.getPlugin();
@@ -346,8 +346,17 @@
request.setOffline( session.isOffline() );
request.setTransferListener( session.getRequest().getTransferListener() );
- List<Artifact> pluginArtifacts =
- resolvePluginArtifacts( plugin, pluginArtifact, request, project.getExtensionArtifactFilter() );
+ ArtifactFilter dependencyFilter = project.getExtensionArtifactFilter();
+ if ( dependencyFilter == null )
+ {
+ dependencyFilter = filter;
+ }
+ else if ( filter != null )
+ {
+ dependencyFilter = new AndArtifactFilter( Arrays.asList( dependencyFilter, filter ) );
+ }
+
+ List<Artifact> pluginArtifacts = resolvePluginArtifacts( plugin, pluginArtifact, request, dependencyFilter );
ClassRealm pluginRealm = classRealmManager.createPluginRealm( plugin, parent, imports );
@@ -420,7 +429,7 @@
// FIXME: only exposed to allow workaround for MNG-4194
protected List<Artifact> resolvePluginArtifacts( Plugin plugin, Artifact pluginArtifact,
RepositoryRequest repositoryRequest,
- ArtifactFilter extensionArtifactFilter )
+ ArtifactFilter dependencyFilter )
throws PluginResolutionException
{
Set<Artifact> overrideArtifacts = new LinkedHashSet<Artifact>();
@@ -433,9 +442,9 @@
ArtifactFilter resolutionFilter = artifactFilterManager.getCoreArtifactFilter();
- if ( extensionArtifactFilter != null )
+ if ( dependencyFilter != null )
{
- resolutionFilter = new AndArtifactFilter( Arrays.asList( resolutionFilter, extensionArtifactFilter ) );
+ resolutionFilter = new AndArtifactFilter( Arrays.asList( resolutionFilter, dependencyFilter ) );
}
ArtifactResolutionRequest request = new ArtifactResolutionRequest( repositoryRequest );
Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginManager.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginManager.java?rev=881793&r1=881792&r2=881793&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginManager.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginManager.java Wed Nov 18 14:53:55 2009
@@ -119,7 +119,7 @@
pluginDescriptor = pluginManager.getPluginDescriptor( plugin, repositoryRequest );
- pluginManager.setupPluginRealm( pluginDescriptor, session, null, null );
+ pluginManager.setupPluginRealm( pluginDescriptor, session, null, null, null );
}
catch ( Exception e )
{
@@ -151,7 +151,7 @@
pluginDescriptor = pluginManager.getPluginDescriptor( plugin, repositoryRequest );
- pluginManager.setupPluginRealm( pluginDescriptor, session, null, null );
+ pluginManager.setupPluginRealm( pluginDescriptor, session, null, null, null );
}
catch ( Exception e )
{
@@ -231,7 +231,7 @@
try
{
- pluginManager.setupPluginRealm( pluginDescriptor, session, null, null );
+ pluginManager.setupPluginRealm( pluginDescriptor, session, null, null, null );
}
catch ( PluginResolutionException e )
{