Also pick up exclusions when available (i.e. only via Aether)
git-svn-id: https://svn.apache.org/repos/asf/maven/shared/trunk@1694577 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/maven/shared/artifact/filter/resolve/transform/ArtifactIncludeNode.java b/src/main/java/org/apache/maven/shared/artifact/filter/resolve/transform/ArtifactIncludeNode.java
index 018de20..fb93dcb 100644
--- a/src/main/java/org/apache/maven/shared/artifact/filter/resolve/transform/ArtifactIncludeNode.java
+++ b/src/main/java/org/apache/maven/shared/artifact/filter/resolve/transform/ArtifactIncludeNode.java
@@ -37,6 +37,13 @@
this.artifact = artifact;
}
+ /**
+ * Note: an artifact doesn't contain exclusion information, so it won't be available here.
+ * When required switch to filtering based on Aether
+ *
+ * @see EclipseAetherNode
+ * @see SonatypeAetherNode
+ */
@Override
public Dependency getDependency()
{
@@ -48,7 +55,8 @@
mavenDependency.setType( artifact.getType() );
mavenDependency.setScope( artifact.getScope() );
mavenDependency.setOptional( artifact.isOptional() );
-
+ // no setExcludes possible
+
return mavenDependency;
}
diff --git a/src/main/java/org/apache/maven/shared/artifact/filter/resolve/transform/EclipseAetherNode.java b/src/main/java/org/apache/maven/shared/artifact/filter/resolve/transform/EclipseAetherNode.java
index 5e82737..448c218 100644
--- a/src/main/java/org/apache/maven/shared/artifact/filter/resolve/transform/EclipseAetherNode.java
+++ b/src/main/java/org/apache/maven/shared/artifact/filter/resolve/transform/EclipseAetherNode.java
@@ -19,10 +19,14 @@
* under the License.
*/
+import java.util.ArrayList;
+import java.util.List;
+
import org.apache.maven.shared.artifact.filter.resolve.Node;
import org.eclipse.aether.artifact.ArtifactProperties;
import org.eclipse.aether.graph.Dependency;
import org.eclipse.aether.graph.DependencyNode;
+import org.eclipse.aether.graph.Exclusion;
/**
* Adapter of an Eclipse Aether DependencyNode for common Node
@@ -62,6 +66,24 @@
{
mavenDependency.setOptional( nodeDependency.isOptional() );
}
+ if ( nodeDependency.getExclusions() != null )
+ {
+ List<org.apache.maven.model.Exclusion> mavenExclusions =
+ new ArrayList<org.apache.maven.model.Exclusion>( nodeDependency.getExclusions().size() );
+
+ for ( Exclusion aetherExclusion : nodeDependency.getExclusions() )
+ {
+ org.apache.maven.model.Exclusion mavenExclusion = new org.apache.maven.model.Exclusion();
+
+ mavenExclusion.setGroupId( aetherExclusion.getGroupId() );
+ mavenExclusion.setArtifactId( aetherExclusion.getArtifactId() );
+ // that's all folks, although Aether has more metadata
+
+ mavenExclusions.add( mavenExclusion );
+ }
+
+ mavenDependency.setExclusions( mavenExclusions );
+ }
return mavenDependency;
}
diff --git a/src/main/java/org/apache/maven/shared/artifact/filter/resolve/transform/SonatypeAetherNode.java b/src/main/java/org/apache/maven/shared/artifact/filter/resolve/transform/SonatypeAetherNode.java
index 484b725..668d2fc 100644
--- a/src/main/java/org/apache/maven/shared/artifact/filter/resolve/transform/SonatypeAetherNode.java
+++ b/src/main/java/org/apache/maven/shared/artifact/filter/resolve/transform/SonatypeAetherNode.java
@@ -19,9 +19,13 @@
* under the License.
*/
+import java.util.ArrayList;
+import java.util.List;
+
import org.apache.maven.shared.artifact.filter.resolve.Node;
import org.sonatype.aether.graph.Dependency;
import org.sonatype.aether.graph.DependencyNode;
+import org.sonatype.aether.graph.Exclusion;
import org.sonatype.aether.util.artifact.ArtifactProperties;
/**
@@ -59,6 +63,24 @@
mavenDependency.setType( nodeDependency.getArtifact().getProperty( ArtifactProperties.TYPE, null ) );
mavenDependency.setScope( nodeDependency.getScope() );
mavenDependency.setOptional( nodeDependency.isOptional() );
+ if ( nodeDependency.getExclusions() != null )
+ {
+ List<org.apache.maven.model.Exclusion> mavenExclusions =
+ new ArrayList<org.apache.maven.model.Exclusion>( nodeDependency.getExclusions().size() );
+
+ for ( Exclusion aetherExclusion : nodeDependency.getExclusions() )
+ {
+ org.apache.maven.model.Exclusion mavenExclusion = new org.apache.maven.model.Exclusion();
+
+ mavenExclusion.setGroupId( aetherExclusion.getGroupId() );
+ mavenExclusion.setArtifactId( aetherExclusion.getArtifactId() );
+ // that's all folks, although Aether has more metadata
+
+ mavenExclusions.add( mavenExclusion );
+ }
+
+ mavenDependency.setExclusions( mavenExclusions );
+ }
return mavenDependency;
}
diff --git a/src/test/java/org/apache/maven/shared/artifact/filter/resolve/transform/EclipseAetherNodeTest.java b/src/test/java/org/apache/maven/shared/artifact/filter/resolve/transform/EclipseAetherNodeTest.java
index 0edb4f6..8809beb 100644
--- a/src/test/java/org/apache/maven/shared/artifact/filter/resolve/transform/EclipseAetherNodeTest.java
+++ b/src/test/java/org/apache/maven/shared/artifact/filter/resolve/transform/EclipseAetherNodeTest.java
@@ -21,11 +21,16 @@
import static org.junit.Assert.assertEquals;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+
import org.apache.maven.shared.artifact.filter.resolve.Node;
import org.eclipse.aether.artifact.DefaultArtifact;
import org.eclipse.aether.graph.DefaultDependencyNode;
import org.eclipse.aether.graph.Dependency;
import org.eclipse.aether.graph.DependencyNode;
+import org.eclipse.aether.graph.Exclusion;
import org.junit.Test;
public class EclipseAetherNodeTest
@@ -78,7 +83,7 @@
@Test
public void testOptional()
{
- Node node = new EclipseAetherNode( newDependencyNode( "g:a:v", null, null ) );
+ Node node = new EclipseAetherNode( newDependencyNode( "g:a:v", null, (Boolean) null ) );
assertEquals( null, node.getDependency().getOptional() );
assertEquals( false, node.getDependency().isOptional() );
@@ -91,6 +96,17 @@
assertEquals( "false", node.getDependency().getOptional() );
assertEquals( false, node.getDependency().isOptional() );
}
+
+ @Test
+ public void testExclusions()
+ {
+ Node node = new EclipseAetherNode( newDependencyNode( "g:a:v", null, Collections.singletonList( "eg:ea" ) ) );
+ assertEquals( 1, node.getDependency().getExclusions().size() );
+
+ org.apache.maven.model.Exclusion mavenExclusion = node.getDependency().getExclusions().get( 0 );
+ assertEquals( "eg", mavenExclusion.getGroupId() );
+ assertEquals( "ea", mavenExclusion.getArtifactId() );
+ }
private DependencyNode newDependencyNode( String coor, String scope )
{
@@ -102,4 +118,19 @@
return new DefaultDependencyNode( new Dependency( new DefaultArtifact( coor ), scope, optional ) );
}
+ private DependencyNode newDependencyNode( String coor, String scope, Collection<String> exclusions )
+ {
+ Dependency dependency = new Dependency( new DefaultArtifact( coor ), scope );
+
+ Collection<Exclusion> aetherExclusions = new ArrayList<Exclusion>( exclusions.size() );
+ for ( String exclusion : exclusions )
+ {
+ String[] ga = exclusion.split( ":" );
+ aetherExclusions.add( new Exclusion( ga[0], ga[1], null, null ) );
+ }
+ dependency = dependency.setExclusions( aetherExclusions );
+
+ return new DefaultDependencyNode( dependency );
+ }
+
}
diff --git a/src/test/java/org/apache/maven/shared/artifact/filter/resolve/transform/SonatypeAetherNodeTest.java b/src/test/java/org/apache/maven/shared/artifact/filter/resolve/transform/SonatypeAetherNodeTest.java
index 37a1a4e..9a26595 100644
--- a/src/test/java/org/apache/maven/shared/artifact/filter/resolve/transform/SonatypeAetherNodeTest.java
+++ b/src/test/java/org/apache/maven/shared/artifact/filter/resolve/transform/SonatypeAetherNodeTest.java
@@ -21,10 +21,15 @@
import static org.junit.Assert.assertEquals;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+
import org.apache.maven.shared.artifact.filter.resolve.Node;
import org.junit.Test;
import org.sonatype.aether.graph.Dependency;
import org.sonatype.aether.graph.DependencyNode;
+import org.sonatype.aether.graph.Exclusion;
import org.sonatype.aether.util.artifact.DefaultArtifact;
import org.sonatype.aether.util.graph.DefaultDependencyNode;
@@ -92,6 +97,17 @@
assertEquals( false, node.getDependency().isOptional() );
}
+ @Test
+ public void testExclusions()
+ {
+ Node node = new SonatypeAetherNode( newDependencyNode( "g:a:v", null, Collections.singletonList( "eg:ea" ) ) );
+ assertEquals( 1, node.getDependency().getExclusions().size() );
+
+ org.apache.maven.model.Exclusion mavenExclusion = node.getDependency().getExclusions().get( 0 );
+ assertEquals( "eg", mavenExclusion.getGroupId() );
+ assertEquals( "ea", mavenExclusion.getArtifactId() );
+ }
+
private DependencyNode newDependencyNode( String string, String scope )
{
return new DefaultDependencyNode( new Dependency( new DefaultArtifact( string ), scope ) );
@@ -102,4 +118,18 @@
return new DefaultDependencyNode( new Dependency( new DefaultArtifact( coor ), scope, optional ) );
}
+ private DependencyNode newDependencyNode( String coor, String scope, Collection<String> exclusions )
+ {
+ Dependency dependency = new Dependency( new DefaultArtifact( coor ), scope );
+
+ Collection<Exclusion> aetherExclusions = new ArrayList<Exclusion>( exclusions.size() );
+ for ( String exclusion : exclusions )
+ {
+ String[] ga = exclusion.split( ":" );
+ aetherExclusions.add( new Exclusion( ga[0], ga[1], null, null ) );
+ }
+ dependency = dependency.setExclusions( aetherExclusions );
+
+ return new DefaultDependencyNode( dependency );
+ }
}