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());