You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by na...@apache.org on 2022/01/11 16:42:33 UTC

[ignite] branch master updated: IGNITE-15963 Improves Maven Utils to automatically reuse project repositories. (#9578)

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

namelchev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new 014c82f  IGNITE-15963 Improves Maven Utils to automatically reuse project repositories. (#9578)
014c82f is described below

commit 014c82f7b79f1c96365a0557a77d25a41ba9d8af
Author: Mikhail Petrov <32...@users.noreply.github.com>
AuthorDate: Tue Jan 11 19:41:54 2022 +0300

    IGNITE-15963 Improves Maven Utils to automatically reuse project repositories. (#9578)
---
 .../testframework/util/MavenUtils.java             | 49 +++++++++++++++++++---
 1 file changed, 44 insertions(+), 5 deletions(-)

diff --git a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/util/MavenUtils.java b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/util/MavenUtils.java
index 81331ab..44cf80d 100644
--- a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/util/MavenUtils.java
+++ b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/util/MavenUtils.java
@@ -22,19 +22,26 @@ import java.io.InputStreamReader;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
 import java.util.concurrent.Callable;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 import com.google.common.base.Charsets;
 import com.google.common.io.CharStreams;
-import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.GridStringBuilder;
 import org.apache.ignite.internal.util.typedef.X;
 import org.apache.ignite.internal.util.typedef.internal.SB;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
+import static org.apache.ignite.internal.util.lang.GridFunc.isEmpty;
+
 /**
  * Provides some useful methods to work with Maven.
  */
@@ -43,6 +50,9 @@ public class MavenUtils {
     private static String locRepPath = null;
 
     /** */
+    private static final String MAVEN_DEPENDENCY_PLUGIN = "org.apache.maven.plugins:maven-dependency-plugin:3.2.0";
+
+    /** */
     private static final String GG_MVN_REPO = "http://www.gridgainsystems.com/nexus/content/repositories/external";
 
     /** Set this flag to true if running PDS compatibility tests locally. */
@@ -142,6 +152,26 @@ public class MavenUtils {
         return output.substring(output.lastIndexOf('>', endTagPos) + 1, endTagPos);
     }
 
+    /** @return Collection of configured repositories for the Maven project. */
+    private static Collection<String> mavenProjectRepositories() throws Exception {
+        String workDir = System.getProperty("user.dir");
+
+        File prjPomFile = new File(workDir, "pom.xml");
+
+        if (!prjPomFile.exists())
+            return Collections.emptyList();
+
+        String out = exec(buildMvnCommand() + " -f " + workDir + ' ' + MAVEN_DEPENDENCY_PLUGIN + ":list-repositories");
+
+        String urlPrefix = "url:";
+
+        return Arrays.stream(out.split(U.nl()))
+            .map(String::trim)
+            .filter(s -> s.startsWith(urlPrefix))
+            .map(s -> s.substring(urlPrefix.length()).trim())
+            .collect(Collectors.toList());
+    }
+
     /**
      * Downloads and stores in local repository an artifact with given identifier.
      *
@@ -156,15 +186,24 @@ public class MavenUtils {
 
         String localProxyMavenSettingsFromEnv = System.getenv("LOCAL_PROXY_MAVEN_SETTINGS");
 
-        SB mavenCommandArgs = new SB(" org.apache.maven.plugins:maven-dependency-plugin:3.0.2:get -Dartifact=" + artifact);
+        GridStringBuilder mavenCommandArgs = new SB(" ").a(MAVEN_DEPENDENCY_PLUGIN).a(":get -Dartifact=" + artifact);
 
-        if (!F.isEmpty(localProxyMavenSettingsFromEnv))
+        if (!isEmpty(localProxyMavenSettingsFromEnv))
             localProxyMavenSettings = Paths.get(localProxyMavenSettingsFromEnv);
 
         if (Files.exists(localProxyMavenSettings))
             mavenCommandArgs.a(" -s " + localProxyMavenSettings.toString());
-        else
-            mavenCommandArgs.a(useGgRepo ? " -DremoteRepositories=" + GG_MVN_REPO : "");
+        else {
+            Collection<String> repos = new ArrayList<>();
+
+            if (useGgRepo)
+                repos.add(GG_MVN_REPO);
+
+            repos.addAll(mavenProjectRepositories());
+
+            if (!repos.isEmpty())
+                mavenCommandArgs.a(" -DremoteRepositories=").a(String.join(",", repos));
+        }
 
         exec(buildMvnCommand() + mavenCommandArgs.toString());