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/06/13 00:16:16 UTC
svn commit: r784296 - in /maven/components/trunk/maven-core/src:
main/java/org/apache/maven/ main/java/org/apache/maven/project/artifact/
test/java/org/apache/maven/project/inheritance/t09/
Author: bentmann
Date: Fri Jun 12 22:16:16 2009
New Revision: 784296
URL: http://svn.apache.org/viewvc?rev=784296&view=rev
Log:
[MNG-4180] [regression] Dependency exclusions are applied globally
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/inheritance/t09/ProjectInheritanceTest.java
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java?rev=784296&r1=784295&r2=784296&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java Fri Jun 12 22:16:16 2009
@@ -1,7 +1,5 @@
package org.apache.maven;
-import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
import java.util.Set;
@@ -12,12 +10,8 @@
import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
import org.apache.maven.artifact.resolver.ResolutionErrorHandler;
-import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
-import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter;
import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
-import org.apache.maven.model.Dependency;
-import org.apache.maven.model.Exclusion;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.artifact.ProjectArtifact;
import org.apache.maven.repository.RepositorySystem;
@@ -37,32 +31,10 @@
public Set<Artifact> resolve( MavenProject project, String scope, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories )
throws ArtifactResolutionException, ArtifactNotFoundException
{
- List<String> exclusions = new ArrayList<String>();
-
- for ( Dependency d : project.getDependencies() )
- {
- if ( d.getExclusions() != null )
- {
- for ( Exclusion e : d.getExclusions() )
- {
- exclusions.add( e.getGroupId() + ":" + e.getArtifactId() );
- }
- }
- }
-
ArtifactFilter scopeFilter = new ScopeArtifactFilter( scope );
-
- ArtifactFilter filter;
- if ( ! exclusions.isEmpty() )
- {
- filter = new AndArtifactFilter( Arrays.asList( new ArtifactFilter[]{ new ExcludesArtifactFilter( exclusions ), scopeFilter } ) );
- }
- else
- {
- filter = scopeFilter;
- }
-
+ ArtifactFilter filter = scopeFilter;
+
ArtifactResolutionRequest request = new ArtifactResolutionRequest()
.setArtifact( new ProjectArtifact( project ) )
.setResolveRoot( false )
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java?rev=784296&r1=784295&r2=784296&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java Fri Jun 12 22:16:16 2009
@@ -17,6 +17,7 @@
import java.io.File;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.List;
@@ -33,10 +34,13 @@
import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager;
import org.apache.maven.artifact.repository.metadata.RepositoryMetadataResolutionException;
+import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter;
import org.apache.maven.artifact.versioning.ArtifactVersion;
import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
import org.apache.maven.model.Dependency;
+import org.apache.maven.model.Exclusion;
import org.apache.maven.project.DefaultProjectBuildingRequest;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.ProjectBuilder;
@@ -135,6 +139,8 @@
{
artifacts = new LinkedHashSet<Artifact>();
+ ArtifactFilter dependencyFilter = artifact.getDependencyFilter();
+
for ( Dependency d : dependencies )
{
String effectiveScope = getEffectiveScope( d.getScope(), artifact.getScope() );
@@ -153,14 +159,34 @@
dependencyArtifact = repositorySystem.createArtifact( d.getGroupId(), d.getArtifactId(), d.getVersion(), effectiveScope, d.getType() );
}
- dependencyArtifact.setOptional( d.isOptional() );
-
- if ( Artifact.SCOPE_SYSTEM.equals( effectiveScope ) )
+ if ( dependencyFilter == null || dependencyFilter.include( dependencyArtifact ) )
{
- dependencyArtifact.setFile( new File( d.getSystemPath() ) );
- }
-
- artifacts.add( dependencyArtifact );
+ dependencyArtifact.setOptional( d.isOptional() );
+
+ if ( Artifact.SCOPE_SYSTEM.equals( effectiveScope ) )
+ {
+ dependencyArtifact.setFile( new File( d.getSystemPath() ) );
+ }
+
+ if ( !d.getExclusions().isEmpty() )
+ {
+ List<String> exclusions = new ArrayList<String>();
+
+ for ( Exclusion e : d.getExclusions() )
+ {
+ exclusions.add( e.getGroupId() + ":" + e.getArtifactId() );
+ }
+
+ ArtifactFilter newFilter = new ExcludesArtifactFilter( exclusions );
+ if ( dependencyFilter != null )
+ {
+ newFilter = new AndArtifactFilter( Arrays.asList( dependencyFilter, newFilter ) );
+ }
+ dependencyArtifact.setDependencyFilter( newFilter );
+ }
+
+ artifacts.add( dependencyArtifact );
+ }
}
}
}
Modified: maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/inheritance/t09/ProjectInheritanceTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/inheritance/t09/ProjectInheritanceTest.java?rev=784296&r1=784295&r2=784296&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/inheritance/t09/ProjectInheritanceTest.java (original)
+++ maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/inheritance/t09/ProjectInheritanceTest.java Fri Jun 12 22:16:16 2009
@@ -76,11 +76,11 @@
assertNotNull("No artifacts", map);
assertTrue("No Artifacts", map.size() > 0);
- assertTrue("Set size should be 3, is " + map.size(), map.size() == 3);
+ assertTrue("Set size should be 2, is " + map.size(), map.size() == 2);
assertTrue("maven-test:t09-a is not in the project", map.containsKey( "maven-test:t09-a" ));
assertTrue("maven-test:t09-b is not in the project", map.containsKey( "maven-test:t09-b" ));
-
+ assertFalse("maven-test:t09-c is in the project", map.containsKey( "maven-test:t09-c" ));
}
/**