This is an automated email from the ASF dual-hosted git repository.
zjffdu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/zeppelin.git
The following commit(s) were added to refs/heads/master by this push:
new f33accd [ZEPPELIN-5545] Support multiple maven repo in
zeppelin.interpreter.d…
f33accd is described below
commit f33accd6190f046f16c5578ff6532c99a27ea8ce
Author: huage1994 <[email protected]>
AuthorDate: Sat Oct 2 23:02:55 2021 +0800
[ZEPPELIN-5545] Support multiple maven repo in zeppelin.interpreter.d…
### What is this PR for?
Support multiple maven repo in config item zeppelin.interpreter.dep.mvnRepo
### What type of PR is it?
[Improvement]
### Todos
* [ ] - Task
### What is the Jira issue?
https://issues.apache.org/jira/browse/ZEPPELIN-5545
### How should this be tested?
CI pass
### Screenshots (if appropriate)
### Questions:
* Does the licenses files need update? No
* Is there breaking changes for older versions? No
* Does this needs documentation? No
Author: huage1994 <[email protected]>
Closes #4239 from huage1994/ZEPPELIN-5545 and squashes the following
commits:
fc5d917925 [huage1994] [ZEPPELIN-5545] add a test for
zeppelin.interpreter.dep.mvnRepo
9161170094 [huage1994] document update for zeppelin.interpreter.dep.mvnRepo
b075e3f5ca [huage1994] rename method name `newCentralRepositorie` to
`newCentralRepositories`
2b14eef46a [huage1994] [ZEPPELIN-5545] Support multiple maven repo in
zeppelin.interpreter.dep.mvnRepo
---
docs/setup/operation/configuration.md | 2 +-
.../zeppelin/dep/AbstractDependencyResolver.java | 4 +--
.../main/java/org/apache/zeppelin/dep/Booter.java | 36 ++++++++++++++++------
.../java/org/apache/zeppelin/dep/BooterTest.java | 17 ++++++++++
.../src/test/resources/zeppelin-site-test.xml | 6 ++++
5 files changed, 52 insertions(+), 13 deletions(-)
diff --git a/docs/setup/operation/configuration.md
b/docs/setup/operation/configuration.md
index 9e12345..5627cdd 100644
--- a/docs/setup/operation/configuration.md
+++ b/docs/setup/operation/configuration.md
@@ -328,7 +328,7 @@ Sources descending by priority:
<tr>
<td><h6 class="properties">ZEPPELIN_INTERPRETER_DEP_MVNREPO</h6></td>
<td><h6 class="properties">zeppelin.interpreter.dep.mvnRepo</h6></td>
- <td>https://repo1.maven.org/maven2/</td>
+ <td>https://repo1.maven.org/maven2/,https://repo2.maven.org/maven2/</td>
<td>Remote principal repository for interpreter's additional dependency
loading</td>
</tr>
<tr>
diff --git
a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/AbstractDependencyResolver.java
b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/AbstractDependencyResolver.java
index c678def..623dba7 100644
---
a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/AbstractDependencyResolver.java
+++
b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/AbstractDependencyResolver.java
@@ -61,14 +61,14 @@ public abstract class AbstractDependencyResolver {
}
}
session = Booter.newRepositorySystemSession(system, localRepoPath);
- repos.add(Booter.newCentralRepository(proxy)); // add maven central
+ repos.addAll(Booter.newCentralRepositorys(proxy)); // add maven central
repos.add(Booter.newLocalRepository());
}
public AbstractDependencyResolver(String localRepoPath, Proxy proxy) {
this.proxy = proxy;
session = Booter.newRepositorySystemSession(system, localRepoPath);
- repos.add(Booter.newCentralRepository(proxy)); // add maven central
+ repos.addAll(Booter.newCentralRepositorys(proxy)); // add maven central
repos.add(Booter.newLocalRepository());
}
diff --git
a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/Booter.java
b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/Booter.java
index bf5e1da..18cef29 100644
--- a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/Booter.java
+++ b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/Booter.java
@@ -30,6 +30,10 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
/**
* Manage mvn repository.
@@ -78,20 +82,32 @@ public class Booter {
return Paths.get(home).resolve(localRepoPath).toAbsolutePath().toString();
}
- public static RemoteRepository newCentralRepository(Proxy proxy) {
- String mvnRepo = System.getenv("ZEPPELIN_INTERPRETER_DEP_MVNREPO");
- if (mvnRepo == null) {
- mvnRepo = ZeppelinConfiguration.create().getString(
+ public static List<RemoteRepository> newCentralRepositorys(Proxy proxy) {
+ String mvnRepoEnv = System.getenv("ZEPPELIN_INTERPRETER_DEP_MVNREPO");
+ if (mvnRepoEnv == null) {
+ mvnRepoEnv = ZeppelinConfiguration.create().getString(
ZeppelinConfiguration.ConfVars.ZEPPELIN_INTERPRETER_DEP_MVNREPO);
}
- if (mvnRepo == null) {
- mvnRepo = "https://repo1.maven.org/maven2/";
+ if (mvnRepoEnv == null) {
+ mvnRepoEnv = "https://repo1.maven.org/maven2/";
}
- RemoteRepository.Builder centralBuilder = new
RemoteRepository.Builder("central", "default", mvnRepo);
- if (proxy != null) {
- centralBuilder.setProxy(proxy);
+
+ List<String> repoList = new ArrayList<>();
+ if (mvnRepoEnv.contains(",")) {
+ repoList.addAll(Arrays.asList(mvnRepoEnv.split(",+")));
+ } else {
+ repoList.add(mvnRepoEnv);
}
- return centralBuilder.build();
+
+ List<RemoteRepository> centralRepositorys = repoList.stream().map(repo -> {
+ RemoteRepository.Builder centralBuilder = new
RemoteRepository.Builder("central", "default", repo);
+ if (proxy != null) {
+ centralBuilder.setProxy(proxy);
+ }
+ return centralBuilder.build();
+ }
+ ).collect(Collectors.toList());
+ return centralRepositorys;
}
public static RemoteRepository newLocalRepository() {
diff --git
a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/dep/BooterTest.java
b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/dep/BooterTest.java
index ffc3c8f..21a8d1a 100644
--- a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/dep/BooterTest.java
+++ b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/dep/BooterTest.java
@@ -17,13 +17,19 @@
package org.apache.zeppelin.dep;
+import org.apache.zeppelin.conf.ZeppelinConfiguration;
+import org.eclipse.aether.repository.RemoteRepository;
import org.junit.Test;
import java.nio.file.Paths;
+import java.util.List;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
public class BooterTest {
@@ -46,4 +52,15 @@ public class BooterTest {
public void should_throw_exception_for_null() {
Booter.resolveLocalRepoPath(null);
}
+
+ @Test
+ public void getInterpreterMvnRepoPathTest() {
+ ZeppelinConfiguration.reset();
+ ZeppelinConfiguration.create("zeppelin-site-test.xml");
+ List<RemoteRepository> remoteRepositories =
Booter.newCentralRepositorys(null);
+ assertNotNull(remoteRepositories);
+ assertEquals(2, remoteRepositories.size());
+ assertEquals("https://repo1.maven.org/maven2/",
remoteRepositories.get(0).getUrl());
+ assertEquals("https://repo2.maven.org/maven2/",
remoteRepositories.get(1).getUrl());
+ }
}
diff --git a/zeppelin-interpreter/src/test/resources/zeppelin-site-test.xml
b/zeppelin-interpreter/src/test/resources/zeppelin-site-test.xml
index 2499e44..55ee1d0 100644
--- a/zeppelin-interpreter/src/test/resources/zeppelin-site-test.xml
+++ b/zeppelin-interpreter/src/test/resources/zeppelin-site-test.xml
@@ -35,4 +35,10 @@
<value>8080</value>
<description>Server port.</description>
</property>
+
+ <property>
+ <name>zeppelin.interpreter.dep.mvnRepo</name>
+
<value>https://repo1.maven.org/maven2/,https://repo2.maven.org/maven2/</value>
+ <description>depended mvn repos</description>
+ </property>
</configuration>