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