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