You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2006/11/29 04:41:00 UTC

svn commit: r480377 - in /maven/components/trunk/maven-core/src/main: java/org/apache/maven/extension/ java/org/apache/maven/plugin/ resources/META-INF/plexus/

Author: brett
Date: Tue Nov 28 19:40:59 2006
New Revision: 480377

URL: http://svn.apache.org/viewvc?view=rev&rev=480377
Log:
[MNG-2228] make sure build extensions are filtered from being loaded in plugins

Modified:
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java
    maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java?view=diff&rev=480377&r1=480376&r2=480377
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java Tue Nov 28 19:40:59 2006
@@ -16,6 +16,7 @@
  * limitations under the License.
  */
 
+import org.apache.maven.MavenArtifactFilterManager;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.ArtifactUtils;
 import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
@@ -25,9 +26,10 @@
 import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
 import org.apache.maven.artifact.resolver.ArtifactResolver;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter;
 import org.apache.maven.model.Extension;
+import org.apache.maven.plugin.PluginManager;
 import org.apache.maven.project.MavenProject;
-import org.apache.maven.MavenArtifactFilterManager;
 import org.codehaus.plexus.PlexusConstants;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.PlexusContainerException;
@@ -37,6 +39,8 @@
 
 import java.util.Collections;
 import java.util.Iterator;
+import java.util.List;
+import java.util.ArrayList;
 
 /**
  * Used to locate extensions.
@@ -54,6 +58,8 @@
 
     private PlexusContainer container;
 
+    private PluginManager pluginManager;
+
     private ArtifactFilter artifactFilter = MavenArtifactFilterManager.createStandardFilter();
 
     public void addExtension( Extension extension, MavenProject project, ArtifactRepository localRepository )
@@ -65,22 +71,26 @@
 
         if ( artifact != null )
         {
-        		ArtifactFilter filter = new ProjectArtifactExceptionFilter( artifactFilter, project.getArtifact() );
-        		
+            ArtifactFilter filter = new ProjectArtifactExceptionFilter( artifactFilter, project.getArtifact() );
+
             ArtifactResolutionResult result = artifactResolver.resolveTransitively( Collections.singleton( artifact ),
                                                                                     project.getArtifact(),
                                                                                     localRepository,
                                                                                     project.getRemoteArtifactRepositories(),
-                                                                                    artifactMetadataSource,
-                                                                                    filter );
+                                                                                    artifactMetadataSource, filter );
+
+            List excludedArtifacts = new ArrayList( result.getArtifacts().size() );
             for ( Iterator i = result.getArtifacts().iterator(); i.hasNext(); )
             {
                 Artifact a = (Artifact) i.next();
 
+                excludedArtifacts.add( ArtifactUtils.versionlessKey( a ) );
+
                 a = project.replaceWithActiveArtifact( a );
 
                 container.addJarResource( a.getFile() );
             }
+            pluginManager.addToArtifactFilter( new ExcludesArtifactFilter( excludedArtifacts )  );
         }
     }
 
@@ -89,23 +99,25 @@
     {
         this.container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
     }
-    
-    private static final class ProjectArtifactExceptionFilter implements ArtifactFilter
+
+    private static final class ProjectArtifactExceptionFilter
+        implements ArtifactFilter
     {
-    		private ArtifactFilter passThroughFilter;
-    		private String projectDependencyConflictId;
-    		
-    		ProjectArtifactExceptionFilter( ArtifactFilter passThroughFilter, Artifact projectArtifact )
-    		{
-				this.passThroughFilter = passThroughFilter;
-				this.projectDependencyConflictId = projectArtifact.getDependencyConflictId();
-    		}
-
-		public boolean include(Artifact artifact) {
-			String depConflictId = artifact.getDependencyConflictId();
-			
-			return projectDependencyConflictId.equals( depConflictId )
-					|| passThroughFilter.include( artifact );
-		}
+        private ArtifactFilter passThroughFilter;
+
+        private String projectDependencyConflictId;
+
+        ProjectArtifactExceptionFilter( ArtifactFilter passThroughFilter, Artifact projectArtifact )
+        {
+            this.passThroughFilter = passThroughFilter;
+            this.projectDependencyConflictId = projectArtifact.getDependencyConflictId();
+        }
+
+        public boolean include( Artifact artifact )
+        {
+            String depConflictId = artifact.getDependencyConflictId();
+
+            return projectDependencyConflictId.equals( depConflictId ) || passThroughFilter.include( artifact );
+        }
     }
 }

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?view=diff&rev=480377&r1=480376&r2=480377
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java Tue Nov 28 19:40:59 2006
@@ -29,6 +29,7 @@
 import org.apache.maven.artifact.resolver.ArtifactResolver;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
+import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
 import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
 import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
 import org.apache.maven.artifact.versioning.VersionRange;
@@ -1190,4 +1191,11 @@
         return pluginContainer.lookupMap( role );
     }
 
+    public void addToArtifactFilter( ArtifactFilter filter )
+    {
+        AndArtifactFilter newFilter = new AndArtifactFilter();
+        newFilter.add( filter );
+        newFilter.add( artifactFilter );
+        artifactFilter = newFilter;
+    }
 }

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java?view=diff&rev=480377&r1=480376&r2=480377
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java Tue Nov 28 19:40:59 2006
@@ -19,6 +19,8 @@
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.Plugin;
@@ -70,4 +72,6 @@
 
     Map getPluginComponents( Plugin plugin, String role )
         throws ComponentLookupException, PluginManagerException;
+
+    void addToArtifactFilter( ArtifactFilter filter );
 }

Modified: maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml?view=diff&rev=480377&r1=480376&r2=480377
==============================================================================
--- maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml Tue Nov 28 19:40:59 2006
@@ -44,6 +44,9 @@
         <requirement>
           <role>org.apache.maven.artifact.metadata.ArtifactMetadataSource</role>
         </requirement>
+        <requirement>
+          <role>org.apache.maven.plugin.PluginManager</role>
+        </requirement>
       </requirements>
     </component>