You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ti...@apache.org on 2018/09/25 22:36:03 UTC

[maven-surefire] branch 1564 updated: implemented avoidArtifactDuplicates()

This is an automated email from the ASF dual-hosted git repository.

tibordigana pushed a commit to branch 1564
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git


The following commit(s) were added to refs/heads/1564 by this push:
     new 7380d3e  implemented avoidArtifactDuplicates()
7380d3e is described below

commit 7380d3e15dbfadaf2ced599099561051e3275324
Author: Tibor17 <ti...@apache.org>
AuthorDate: Wed Sep 26 00:35:52 2018 +0200

    implemented avoidArtifactDuplicates()
---
 .../plugin/surefire/AbstractSurefireMojo.java      |  2 +-
 .../maven/plugin/surefire/TestClassPath.java       | 32 ++++++++++++++++++++--
 2 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
index c407ffe..905cdab 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
@@ -2452,7 +2452,7 @@ public abstract class AbstractSurefireMojo
         }
 
         return new TestClassPath( classpathArtifacts, getClassesDirectory(),
-                getTestClassesDirectory(), getAdditionalClasspathElements() );
+                getTestClassesDirectory(), getAdditionalClasspathElements(), logger );
 
         // adding TestNG MethodSelector to the classpath
         // Todo: move
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/TestClassPath.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/TestClassPath.java
index 8727106..6249ccd 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/TestClassPath.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/TestClassPath.java
@@ -21,9 +21,11 @@ package org.apache.maven.plugin.surefire;
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.surefire.booter.Classpath;
+import org.codehaus.plexus.logging.Logger;
 
 import java.io.File;
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
@@ -36,21 +38,45 @@ final class TestClassPath
     private final File classesDirectory;
     private final File testClassesDirectory;
     private final String[] additionalClasspathElements;
+    private final Logger logger;
 
     TestClassPath( Iterable<Artifact> artifacts,
                    File classesDirectory,
                    File testClassesDirectory,
-                   String[] additionalClasspathElements )
+                   String[] additionalClasspathElements,
+                   Logger logger )
     {
         this.artifacts = artifacts;
         this.classesDirectory = classesDirectory;
         this.testClassesDirectory = testClassesDirectory;
         this.additionalClasspathElements = additionalClasspathElements;
+        this.logger = logger;
     }
 
-    void avoidArtifactDuplicates( Set<Artifact> providerClasspath )
+    void avoidArtifactDuplicates( Set<Artifact> providerArtifacts )
     {
-
+        for ( Artifact artifact : artifacts )
+        {
+            Iterator<Artifact> it = providerArtifacts.iterator();
+            while ( it.hasNext() )
+            {
+                Artifact providerArtifact = it.next();
+                String classifier1 = providerArtifact.getClassifier();
+                String classifier2 = artifact.getClassifier();
+                if ( providerArtifact.getGroupId().equals( artifact.getGroupId() )
+                        && providerArtifact.getArtifactId().equals( artifact.getArtifactId() )
+                        && providerArtifact.getType().equals( artifact.getType() )
+                        && ( classifier1 == null ? classifier2 == null : classifier1.equals( classifier2 ) ) )
+                {
+                    it.remove();
+                    if ( logger.isDebugEnabled() )
+                    {
+                        logger.debug( "Removed artifact " + providerArtifact + " from provider. "
+                                + "Already appears in test classpath." );
+                    }
+                }
+            }
+        }
     }
 
     Iterable<Artifact> getArtifacts()