You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by br...@apache.org on 2005/06/07 16:22:39 UTC

svn commit: r188779 - /maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact /maven/components/trunk/maven-model /maven/components/trunk/maven-project/src/main/java/org/apache/maven/project /maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact

Author: brett
Date: Tue Jun  7 07:22:38 2005
New Revision: 188779

URL: http://svn.apache.org/viewcvs?rev=188779&view=rev
Log:
add quick support for exclusions


Modified:
    maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java
    maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java
    maven/components/trunk/maven-model/maven.mdo
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java

Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java?rev=188779&r1=188778&r2=188779&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/Artifact.java Tue Jun  7 07:22:38 2005
@@ -19,6 +19,7 @@
 import org.apache.maven.artifact.metadata.ArtifactMetadata;
 import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 
 import java.io.File;
 import java.util.List;
@@ -93,4 +94,8 @@
     String getDownloadUrl();
 
     void setDownloadUrl( String downloadUrl );
+
+    ArtifactFilter getDependencyFilter();
+
+    void setDependencyFilter( ArtifactFilter artifactFilter );
 }

Modified: maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java?rev=188779&r1=188778&r2=188779&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java (original)
+++ maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java Tue Jun  7 07:22:38 2005
@@ -20,6 +20,7 @@
 import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.layout.ArtifactPathFormatException;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.codehaus.plexus.util.StringUtils;
 
 import java.io.File;
@@ -58,6 +59,8 @@
 
     private String downloadUrl;
 
+    private ArtifactFilter dependencyFilter;
+
     /**
      * !!! WARNING !!! Never put <classifier/> in the POM. It is for mojo use
      * only. Classifier is for specifying derived artifacts, like ejb-client.
@@ -349,5 +352,15 @@
     public void setDownloadUrl( String downloadUrl )
     {
         this.downloadUrl = downloadUrl;
+    }
+
+    public ArtifactFilter getDependencyFilter()
+    {
+        return dependencyFilter;
+    }
+
+    public void setDependencyFilter( ArtifactFilter artifactFilter )
+    {
+        this.dependencyFilter = artifactFilter;
     }
 }

Modified: maven/components/trunk/maven-model/maven.mdo
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-model/maven.mdo?rev=188779&r1=188778&r2=188779&view=diff
==============================================================================
--- maven/components/trunk/maven-model/maven.mdo (original)
+++ maven/components/trunk/maven-model/maven.mdo Tue Jun  7 07:22:38 2005
@@ -17,6 +17,9 @@
  |
  | o use enums where appropriate (eg dependency scope)
  |
+ | o a number of elements have a grouId/artifactId and sometimes version. It would be good to have them all extend one
+ |   definition of these types
+ |
  -->
 <model>
   <id>maven</id>
@@ -1210,6 +1213,18 @@
           <type>String</type>
           <defaultValue>compile</defaultValue>
         </field>
+        <field>
+          <name>exclusions</name>
+          <version>4.0.0</version>
+          <description>
+            Lists a set of artifacts that should be excluded from this dependency's artifact list when it comes to
+            calculating transitive dependencies.
+          </description>
+          <association>
+            <type>Exclusion</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
       </fields>
       <codeSegments>
         <codeSegment>
@@ -1318,6 +1333,24 @@
           <name>id</name>
           <version>3.0.0+</version>
           <description><![CDATA[The username of the developer.]]></description>
+          <type>String</type>
+        </field>
+      </fields>
+    </class>
+    <class>
+      <name>Exclusion</name>
+      <version>4.0.0</version>
+      <fields>
+        <field>
+          <name>artifactId</name>
+          <version>4.0.0</version>
+          <description><![CDATA[The artifact id of the project to exclude.]]></description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>groupId</name>
+          <version>4.0.0</version>
+          <description><![CDATA[The group id of the project to exclude.]]></description>
           <type>String</type>
         </field>
       </fields>

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=188779&r1=188778&r2=188779&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Tue Jun  7 07:22:38 2005
@@ -41,6 +41,7 @@
 import org.apache.maven.project.path.PathTranslator;
 import org.apache.maven.project.validation.ModelValidationResult;
 import org.apache.maven.project.validation.ModelValidator;
+import org.apache.maven.project.artifact.MavenMetadataSource;
 import org.codehaus.plexus.PlexusConstants;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
@@ -478,21 +479,8 @@
 
     protected Set createArtifacts( List dependencies )
     {
-        Set projectArtifacts = new HashSet();
-
-        for ( Iterator i = dependencies.iterator(); i.hasNext(); )
-        {
-            Dependency d = (Dependency) i.next();
-
-            Artifact artifact = artifactFactory.createArtifact( d.getGroupId(), d.getArtifactId(), d.getVersion(),
-                                                                d.getScope(), d.getType(), null );
-            if ( artifact != null )
-            {
-                projectArtifacts.add( artifact );
-            }
-        }
-
-        return projectArtifacts;
+        // TODO: merge with MavenMetadataSource properly
+        return new MavenMetadataSource( artifactResolver, this ).createArtifacts( dependencies, null, null );
     }
 
     protected Set createPluginArtifacts( List plugins )

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java?rev=188779&r1=188778&r2=188779&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java Tue Jun  7 07:22:38 2005
@@ -24,7 +24,11 @@
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 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.artifact.resolver.filter.AndArtifactFilter;
 import org.apache.maven.model.Dependency;
+import org.apache.maven.model.Exclusion;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
 import org.apache.maven.project.MavenProject;
@@ -37,6 +41,7 @@
 import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
@@ -78,7 +83,7 @@
     {
         // TODO: only metadata is really needed - resolve as metadata
         Artifact pomArtifact = artifactFactory.createArtifact( artifact.getGroupId(), artifact.getArtifactId(),
-                                                   artifact.getVersion(), artifact.getScope(), "pom" );
+                                                               artifact.getVersion(), artifact.getScope(), "pom" );
 
         List dependencies = null;
 
@@ -133,10 +138,10 @@
                 IOUtil.close( reader );
             }
         }
-        return createArtifacts( dependencies, artifact.getScope() );
+        return createArtifacts( dependencies, artifact.getScope(), artifact.getDependencyFilter() );
     }
 
-    protected Set createArtifacts( List dependencies, String inheritedScope )
+    public Set createArtifacts( List dependencies, String inheritedScope, ArtifactFilter dependencyFilter )
     {
         Set projectArtifacts = new HashSet();
 
@@ -146,9 +151,36 @@
 
             Artifact artifact = artifactFactory.createArtifact( d.getGroupId(), d.getArtifactId(), d.getVersion(),
                                                                 d.getScope(), d.getType(), inheritedScope );
-            if ( artifact != null )
+
+            if ( artifact != null && ( dependencyFilter == null || dependencyFilter.include( artifact ) ) )
             {
-                projectArtifacts.add( artifact );
+                if ( d.getExclusions() != null && !d.getExclusions().isEmpty() )
+                {
+                    List exclusions = new ArrayList();
+                    for ( Iterator j = d.getExclusions().iterator(); j.hasNext(); )
+                    {
+                        Exclusion e = (Exclusion) j.next();
+                        exclusions.add( e.getGroupId() + ":" + e.getArtifactId() );
+                    }
+
+                    ArtifactFilter newFilter = new ExcludesArtifactFilter( exclusions );
+
+                    if ( dependencyFilter != null )
+                    {
+                        AndArtifactFilter filter = new AndArtifactFilter();
+                        filter.add( dependencyFilter );
+                        filter.add( newFilter );
+                        dependencyFilter = filter;
+                    }
+                    else
+                    {
+                        dependencyFilter = newFilter;
+                    }
+                }
+
+                artifact.setDependencyFilter( dependencyFilter );
+
+                    projectArtifacts.add( artifact );
             }
         }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org