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 <guanhua...@foxmail.com> 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 <guanhua...@foxmail.com> 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>