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 ) {