You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by pd...@apache.org on 2020/10/14 14:27:13 UTC
[zeppelin] branch master updated: [ZEPPELIN-4989] Update to Maven
resolver
This is an automated email from the ASF dual-hosted git repository.
pdallig 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 56ac563 [ZEPPELIN-4989] Update to Maven resolver
56ac563 is described below
commit 56ac563fe12fbed82d74d9e69b615685fd2ec90b
Author: Philipp Dallig <ph...@gmail.com>
AuthorDate: Fri Aug 7 10:54:15 2020 +0200
[ZEPPELIN-4989] Update to Maven resolver
### What is this PR for?
This PR updates from aether to maven resolver.
### What type of PR is it?
- Improvement
### Todos
* [ ] - Task
### What is the Jira issue?
* https://issues.apache.org/jira/browse/ZEPPELIN-4989
### How should this be tested?
* Travis-CI: https://travis-ci.org/github/Reamer/zeppelin/builds/729250923
### Questions:
* Does the licenses files need update? No
* Is there breaking changes for older versions? No
* Does this needs documentation? No
Author: Philipp Dallig <ph...@gmail.com>
Closes #3875 from Reamer/maven_resolver and squashes the following commits:
9b7ec55f1 [Philipp Dallig] Update to Maven resolver
92ff397bb [Philipp Dallig] Update download plugin
---
mongodb/pom.xml | 7 +
pom.xml | 7 +-
submarine/pom.xml | 4 -
.../submarine/PySubmarineInterpreterTest.java | 2 +-
zeppelin-distribution/src/bin_license/LICENSE | 29 ++--
zeppelin-interpreter-integration/pom.xml | 2 +-
zeppelin-interpreter/pom.xml | 122 ++++-------------
.../zeppelin/dep/AbstractDependencyResolver.java | 86 ++++++++----
.../main/java/org/apache/zeppelin/dep/Booter.java | 41 ++++--
.../org/apache/zeppelin/dep/DependencyContext.java | 148 ---------------------
.../apache/zeppelin/dep/DependencyResolver.java | 49 ++++---
.../java/org/apache/zeppelin/dep/Repository.java | 10 +-
.../apache/zeppelin/dep/RepositoryListener.java | 4 +-
.../zeppelin/dep/RepositorySystemFactory.java | 66 ++++-----
.../org/apache/zeppelin/dep/TransferListener.java | 6 +-
.../remote/RemoteInterpreterServer.java | 2 +-
.../zeppelin/dep/DependencyResolverTest.java | 2 +-
.../apache/zeppelin/rest/InterpreterRestApi.java | 2 +-
.../zeppelin/service/InterpreterService.java | 16 +--
.../zeppelin/service/InterpreterServiceTest.java | 8 --
.../interpreter/InterpreterInfoSaving.java | 2 +-
.../interpreter/InterpreterSettingManager.java | 6 +-
.../interpreter/install/InstallInterpreter.java | 11 +-
.../interpreter/InterpreterSettingManagerTest.java | 4 +-
.../interpreter/ManagedInterpreterGroupTest.java | 2 +-
.../org/apache/zeppelin/notebook/NotebookTest.java | 2 +-
26 files changed, 216 insertions(+), 424 deletions(-)
diff --git a/mongodb/pom.xml b/mongodb/pom.xml
index b3b4c1a..5943759 100644
--- a/mongodb/pom.xml
+++ b/mongodb/pom.xml
@@ -37,6 +37,13 @@
<interpreter.name>mongodb</interpreter.name>
</properties>
+ <dependencies>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ </dependency>
+ </dependencies>
+
<build>
<plugins>
<plugin>
diff --git a/pom.xml b/pom.xml
index fc1a3a8..90ce0ae 100644
--- a/pom.xml
+++ b/pom.xml
@@ -139,6 +139,7 @@
<shiro.version>1.4.2</shiro.version>
<joda.version>2.9.9</joda.version>
<bouncycastle.version>1.60</bouncycastle.version>
+ <maven.version>3.6.3</maven.version>
<hadoop2.7.version>2.7.7</hadoop2.7.version>
<hadoop2.6.version>2.6.5</hadoop2.6.version>
@@ -170,7 +171,7 @@
<plugin.compiler.version>3.8.1</plugin.compiler.version>
<plugin.dependency.version>3.1.2</plugin.dependency.version>
<plugin.deploy.version>2.8.2</plugin.deploy.version>
- <plugin.download.version>1.3.0</plugin.download.version>
+ <plugin.download.version>1.6.0</plugin.download.version>
<plugin.eclipse.version>2.8</plugin.eclipse.version>
<plugin.enforcer.version>3.0.0-M3</plugin.enforcer.version>
<plugin.exec.version>1.6.0</plugin.exec.version>
@@ -878,10 +879,6 @@
<artifactId>HikariCP-java7</artifactId>
</exclusion>
<exclusion>
- <groupId>com.google.inject</groupId>
- <artifactId>guice</artifactId>
- </exclusion>
- <exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</exclusion>
diff --git a/submarine/pom.xml b/submarine/pom.xml
index 4f40db5..9078fab 100644
--- a/submarine/pom.xml
+++ b/submarine/pom.xml
@@ -134,10 +134,6 @@
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
- <exclusion>
- <groupId>org.jsoup</groupId>
- <artifactId>jsoup</artifactId>
- </exclusion>
</exclusions>
</dependency>
diff --git a/submarine/src/test/java/org/apache/zeppelin/submarine/PySubmarineInterpreterTest.java b/submarine/src/test/java/org/apache/zeppelin/submarine/PySubmarineInterpreterTest.java
index 4b8a34a..5d18ae3 100644
--- a/submarine/src/test/java/org/apache/zeppelin/submarine/PySubmarineInterpreterTest.java
+++ b/submarine/src/test/java/org/apache/zeppelin/submarine/PySubmarineInterpreterTest.java
@@ -68,7 +68,7 @@ public class PySubmarineInterpreterTest extends BaseInterpreterTest {
InterpreterResult intpResult = pySubmarineIntp.interpret(callTensorflowFunc, intpContext);
// Check if the SubmarineInterpreter performs the tensorlfow function whether successfully.
- assertEquals(intpResult.code(), InterpreterResult.Code.SUCCESS);
+ assertEquals(InterpreterResult.Code.SUCCESS, intpResult.code());
// Successfully execute tensorflow to get the version function,
// otherwise it will trigger an exception.
diff --git a/zeppelin-distribution/src/bin_license/LICENSE b/zeppelin-distribution/src/bin_license/LICENSE
index cbfd20e..fb2b835 100644
--- a/zeppelin-distribution/src/bin_license/LICENSE
+++ b/zeppelin-distribution/src/bin_license/LICENSE
@@ -46,11 +46,10 @@ The following components are provided under Apache License.
(Apache 2.0) Chill Java (com.twitter:chill-java:jar:0.8.0 - https://github.com/twitter/chill/)
(Apache 2.0) Chill Protobuf (com.twitter:chill-protobuf:0.8.0 - https://github.com/twitter/chill/)
(Apache 2.0) QDox (com.thoughtworks.qdox:qdox:jar:2.0-M3 - https://github.com/paul-hammant/qdox/)
- (Apache 2.0) Codehaus Plexus (org.codehaus.plexus:plexus:jar:1.5.6 - https://codehaus-plexus.github.io/)
- (Apache 2.0) Codehaus Plexus Interpolation (org.codehaus.plexus:plexus-interpolation:1.14 - https://codehaus-plexus.github.io/)
+ (Apache 2.0) Codehaus Plexus Interpolation (org.codehaus.plexus:plexus-interpolation:1.25 - https://github.com/codehaus-plexus/plexus-interpolation)
(Apache 2.0) Codehaus Plexus Component Annotations (org.codehaus.plexus:plexus-component-annotations:1.5.5 - https://codehaus-plexus.github.io/)
- (Apache 2.0) Codehaus Plexus Classwords (org.codehaus.plexus:plexus-classwords:2.4 - https://codehaus-plexus.github.io/)
- (Apache 2.0) Codehaus Plexus Utils (org.codehaus.plexus:plexus-utils:2.0.7 - https://codehaus-plexus.github.io/)
+ (Apache 2.0) Codehaus Plexus Classwords (org.codehaus.plexus:plexus-classwords:2.6.0 - http://github.com/codehaus-plexus/plexus-classworlds)
+ (Apache 2.0) Codehaus Plexus Utils (org.codehaus.plexus:plexus-utils:3.2.1 - http://github.com/codehaus-plexus/plexus-utils)
(Apache 2.0) findbugs jsr305 (com.google.code.findbugs:jsr305:jar:1.3.9 - http://findbugs.sourceforge.net/)
(Apache 2.0) Google Guava (com.google.guava:guava:15.0 - https://code.google.com/p/guava-libraries/)
(Apache 2.0) Jackson (com.fasterxml.jackson.core:jackson-core:2.7.0 - https://github.com/FasterXML/jackson-core)
@@ -207,14 +206,14 @@ The following components are provided under Apache License.
(Apache 2.0) Katan CSV 0.1.12 (com.nrinaudo:kantan.csv:0.1.12 - https://github.com/nrinaudo/kantan.csv)
(Apache 2.0) Katan Codecs 0.1.6 (com.nrinaudo:kantan.codecs:0.1.6 - https://github.com/nrinaudo/kantan.csv)
(Apache 2.0) jansi 1.4 (org.fusesource.jansi:jansi:1.4 - https://github.com/fusesource/jansi)/
- (Apache 2.0) Maven Plugin API 3.0 (org.apache.maven:maven-plugin-api:3.0 - https://github.com/apache/maven)
- (Apache 2.0) Maven Artifact 3.0 (org.apache.maven:maven-artifact:3.0 - https://github.com/apache/maven)
- (Apache 2.0) Maven Model Builder 3.0.3 (org.apache.maven:maven-model-builder:3.0.3 - https://github.com/apache/maven)
- (Apache 2.0) Maven Repository Metadata 3.0.3 (org.apache.maven:maven-repository-metadata:3.0.3 - https://github.com/apache/maven)
- (Apache 2.0) Maven Wagon Provider API 1.0 (org.apache.maven.wagon:wagon-provider-api:2.7 - https://mvnrepository.com/artifact/org.apache.maven.wagon/wagon-provider-api/2.7)
- (Apache 2.0) Maven Wagon HTTP Lightweight 1.0 (org.apache.maven.wagon:wagon-http-lightweight:2.7 - https://mvnrepository.com/artifact/org.apache.maven.wagon/wagon-http-lightweight/2.7)
- (Apache 2.0) Maven Wagon HTTP 1.0 (org.apache.maven.wagon:wagon-http:2.7 - https://mvnrepository.com/artifact/org.apache.maven.wagon/wagon-http/2.7)
- (Apache 2.0) Maven Wagon HTTP Shared 1.0 (org.apache.maven.wagon:wagon-http-shared:2.7 - https://mvnrepository.com/artifact/org.apache.maven.wagon/wagon-http-shared/2.7)
+ (Apache 2.0) Maven Plugin API 3.6.3 (org.apache.maven:maven-plugin-api:3.6.3 - https://github.com/apache/maven)
+ (Apache 2.0) Maven Artifact 3.6.3 (org.apache.maven:maven-artifact:3.6.3 - https://github.com/apache/maven)
+ (Apache 2.0) Maven Model Builder 3.6.3 (org.apache.maven:maven-model-builder:3.6.3 - https://github.com/apache/maven)
+ (Apache 2.0) Maven Repository Metadata Model 3.6.3 (org.apache.maven:maven-repository-metadata:3.6.3 - https://github.com/apache/maven)
+ (Apache 2.0) Maven Resolver Provider Metadata 3.6.3 (org.apache.maven:maven-resolver-provider:3.6.3 - https://github.com/apache/maven)
+ (Apache 2.0) Maven Artifact Resolver Connector Basic 1.4.1 (org.apache.maven.resolver:maven-resolver-connector-basic:1.4.1 - https://github.com/apache/maven-resolver)
+ (Apache 2.0) Maven Artifact Resolver Transport File 1.4.1 (org.apache.maven.resolver:maven-resolver-transport-file:1.4.1 - https://github.com/apache/maven-resolver)
+ (Apache 2.0) Maven Artifact Resolver Transport HTTP 1.4.1 (org.apache.maven.resolver:maven-resolver-transport-http:1.4.1 - https://github.com/apache/maven-resolver)
(Apache 2.0) Scalatest 2.2.4 (org.scalatest:scalatest_2.10:2.2.4 - https://github.com/scalatest/scalatest)
(Apache 2.0) frontend-maven-plugin 1.3 (com.github.eirslett:frontend-maven-plugin:1.3 - https://github.com/eirslett/frontend-maven-plugin/blob/frontend-plugins-1.3/LICENSE
(Apache 2.0) frontend-plugin-core 1.3 (com.github.eirslett:frontend-plugin-core) - https://github.com/eirslett/frontend-maven-plugin/blob/frontend-plugins-1.3/LICENSE
@@ -377,12 +376,10 @@ EPL license
The following components are provided under the EPL License.
- (EPL 1.0) Aether (org.sonatype.aether - http://www.eclipse.org/aether/)
(EPL 1.0) JDT Annotations For Enhanced Null Analysis (org.eclipse.jdt:org.eclipse.jdt.annotation:1.1.0 - https://repo.eclipse.org/content/repositories/eclipse-releases/org/eclipse/jdt/org.eclipse.jdt.annotation)
(EPL 1.0) JRuby (org.jruby.jruby-complete:v1.6.8 - http://www.jruby.org/)
- (EPL 1.0) Sisu Inject Plexus 2.2.2 (org.sonatype.sisu:sisu-inject-plexus:2.2.2 - https://github.com/sonatype/sisu)
- (EPL 1.0) Sisu Inject Bean 2.2.2 (org.sonatype.sisu:sisu-inject-bean:2.2.2 - https://github.com/sonatype/sisu)
- (EPL 1.0) Sisu Inject Guice (org.sonatype.sisu:sisu-inject-guice:no_aop- https://github.com/sonatype/sisu)
+ (EPL 1.0) Sisu Plexus 0.3.4 (org.eclipse.sisu:org.eclipse.sisu.plexus:0.3.4 - https://www.eclipse.org/sisu/)
+ (EPL 1.0) Sisu Inject 0.3.4 (org.eclipse.sisu:org.eclipse.sisu.inject:0.3.4 - https://www.eclipse.org/sisu/)
(EPL 1.0) JUnit 4.12 (junit:junit:4.12 - https://github.com/junit-team/junit4)
diff --git a/zeppelin-interpreter-integration/pom.xml b/zeppelin-interpreter-integration/pom.xml
index 6bb3c7e..80eee4a 100644
--- a/zeppelin-interpreter-integration/pom.xml
+++ b/zeppelin-interpreter-integration/pom.xml
@@ -88,7 +88,7 @@
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-model</artifactId>
- <version>3.0.3</version>
+ <version>${maven.version}</version>
<exclusions>
<exclusion>
<groupId>org.codehaus.plexus</groupId>
diff --git a/zeppelin-interpreter/pom.xml b/zeppelin-interpreter/pom.xml
index 93925ba..0f83831 100644
--- a/zeppelin-interpreter/pom.xml
+++ b/zeppelin-interpreter/pom.xml
@@ -38,10 +38,9 @@
<properties>
<!--library versions-->
<commons.pool2.version>2.3</commons.pool2.version>
- <maven.plugin.api.version>3.0</maven.plugin.api.version>
- <aether.version>1.12</aether.version>
- <maven.aeither.provider.version>3.0.3</maven.aeither.provider.version>
- <wagon.version>2.7</wagon.version>
+ <maven.resolver.version>1.4.1</maven.resolver.version>
+ <!-- must match with maven version -->
+ <sisu.plexus.version>0.3.4</sisu.plexus.version>
<jline.version>2.14.3</jline.version>
<atomix.version>3.0.0-rc4</atomix.version>
@@ -135,66 +134,24 @@
<artifactId>jcl-over-slf4j</artifactId>
</dependency>
- <!-- Aether :: maven dependency resolution -->
+ <!-- maven dependency resolution -->
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
- <version>${maven.plugin.api.version}</version>
- <exclusions>
- <exclusion>
- <groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-utils</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.sonatype.sisu</groupId>
- <artifactId>sisu-inject-plexus</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.apache.maven</groupId>
- <artifactId>maven-model</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
-
- <dependency>
- <groupId>org.sonatype.aether</groupId>
- <artifactId>aether-api</artifactId>
- <version>${aether.version}</version>
+ <version>${maven.version}</version>
</dependency>
<dependency>
- <groupId>org.sonatype.aether</groupId>
- <artifactId>aether-util</artifactId>
- <version>${aether.version}</version>
- </dependency>
-
- <dependency>
- <groupId>org.sonatype.aether</groupId>
- <artifactId>aether-impl</artifactId>
- <version>${aether.version}</version>
- </dependency>
-
- <dependency>
- <groupId>org.apache.maven</groupId>
- <artifactId>maven-aether-provider</artifactId>
- <version>${maven.aeither.provider.version}</version>
+ <groupId>org.eclipse.sisu</groupId>
+ <artifactId>org.eclipse.sisu.plexus</artifactId>
+ <version>${sisu.plexus.version}</version>
<exclusions>
+ <!-- part of maven-plugin-api -->
<exclusion>
- <groupId>org.sonatype.aether</groupId>
- <artifactId>aether-api</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.sonatype.aether</groupId>
- <artifactId>aether-spi</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.sonatype.aether</groupId>
- <artifactId>aether-util</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.sonatype.aether</groupId>
- <artifactId>aether-impl</artifactId>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-classworlds</artifactId>
</exclusion>
+ <!-- part of maven-plugin-api -->
<exclusion>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
@@ -203,58 +160,27 @@
</dependency>
<dependency>
- <groupId>org.sonatype.aether</groupId>
- <artifactId>aether-connector-file</artifactId>
- <version>${aether.version}</version>
- </dependency>
-
- <dependency>
- <groupId>org.sonatype.aether</groupId>
- <artifactId>aether-connector-wagon</artifactId>
- <version>${aether.version}</version>
- <exclusions>
- <exclusion>
- <groupId>org.apache.maven.wagon</groupId>
- <artifactId>wagon-provider-api</artifactId>
- </exclusion>
- </exclusions>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-resolver-provider</artifactId>
+ <version>${maven.version}</version>
</dependency>
<dependency>
- <groupId>org.apache.maven.wagon</groupId>
- <artifactId>wagon-provider-api</artifactId>
- <version>${wagon.version}</version>
- <exclusions>
- <exclusion>
- <groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-utils</artifactId>
- </exclusion>
- </exclusions>
+ <groupId>org.apache.maven.resolver</groupId>
+ <artifactId>maven-resolver-connector-basic</artifactId>
+ <version>${maven.resolver.version}</version>
</dependency>
<dependency>
- <groupId>org.apache.maven.wagon</groupId>
- <artifactId>wagon-http-lightweight</artifactId>
- <version>${wagon.version}</version>
- <exclusions>
- <exclusion>
- <groupId>org.apache.maven.wagon</groupId>
- <artifactId>wagon-http-shared</artifactId>
- </exclusion>
- </exclusions>
+ <groupId>org.apache.maven.resolver</groupId>
+ <artifactId>maven-resolver-transport-file</artifactId>
+ <version>${maven.resolver.version}</version>
</dependency>
<dependency>
- <groupId>org.apache.maven.wagon</groupId>
- <artifactId>wagon-http</artifactId>
- <version>${wagon.version}</version>
- <exclusions>
- <!-- using jcl-over-slf4j instead -->
- <exclusion>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- </exclusion>
- </exclusions>
+ <groupId>org.apache.maven.resolver</groupId>
+ <artifactId>maven-resolver-transport-http</artifactId>
+ <version>${maven.resolver.version}</version>
</dependency>
<dependency>
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 0de790a..c678def 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
@@ -17,72 +17,102 @@
package org.apache.zeppelin.dep;
+import java.net.MalformedURLException;
import java.net.URL;
import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
-import org.sonatype.aether.RepositorySystem;
-import org.sonatype.aether.RepositorySystemSession;
-import org.sonatype.aether.repository.Authentication;
-import org.sonatype.aether.repository.Proxy;
-import org.sonatype.aether.repository.RemoteRepository;
-import org.sonatype.aether.repository.RepositoryPolicy;
-import org.sonatype.aether.resolution.ArtifactResult;
+import org.apache.zeppelin.conf.ZeppelinConfiguration;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.repository.Authentication;
+import org.eclipse.aether.repository.Proxy;
+import org.eclipse.aether.repository.RemoteRepository;
+import org.eclipse.aether.repository.RepositoryPolicy;
+import org.eclipse.aether.resolution.ArtifactResult;
+import org.eclipse.aether.util.repository.AuthenticationBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Abstract dependency resolver.
* Add new dependencies from mvn repo (at runtime) Zeppelin.
*/
public abstract class AbstractDependencyResolver {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(AbstractDependencyResolver.class);
+
protected RepositorySystem system = Booter.newRepositorySystem();
protected List<RemoteRepository> repos = new LinkedList<>();
protected RepositorySystemSession session;
-
+ private Proxy proxy = null;
+
public AbstractDependencyResolver(String localRepoPath) {
+ ZeppelinConfiguration conf = ZeppelinConfiguration.create();
+ if (conf.getZeppelinProxyUrl() != null) {
+ try {
+ URL proxyUrl = new URL(conf.getZeppelinProxyUrl());
+ Authentication auth = new AuthenticationBuilder().addUsername(conf.getZeppelinProxyUser()).addPassword(conf.getZeppelinProxyPassword()).build();
+ proxy = new Proxy(proxyUrl.getProtocol(), proxyUrl.getHost(), proxyUrl.getPort(), auth);
+ } catch (MalformedURLException e) {
+ LOGGER.error("Proxy Url {} is not valid - skipping Proxy config", conf.getZeppelinProxyUrl(), e);
+ }
+ }
session = Booter.newRepositorySystemSession(system, localRepoPath);
- repos.add(Booter.newCentralRepository()); // add maven central
+ repos.add(Booter.newCentralRepository(proxy)); // add maven central
repos.add(Booter.newLocalRepository());
}
- public void setProxy(URL proxyUrl, String proxyUser, String proxyPassword) {
- Authentication auth = new Authentication(proxyUser, proxyPassword);
- Proxy proxy = new Proxy(proxyUrl.getProtocol(), proxyUrl.getHost(), proxyUrl.getPort(), auth);
- synchronized (repos) {
- for (RemoteRepository repo : repos) {
- repo.setProxy(proxy);
- }
- }
+ public AbstractDependencyResolver(String localRepoPath, Proxy proxy) {
+ this.proxy = proxy;
+ session = Booter.newRepositorySystemSession(system, localRepoPath);
+ repos.add(Booter.newCentralRepository(proxy)); // add maven central
+ repos.add(Booter.newLocalRepository());
}
public List<RemoteRepository> getRepos() {
return this.repos;
}
-
+
public void addRepo(String id, String url, boolean snapshot) {
synchronized (repos) {
delRepo(id);
- RemoteRepository rr = new RemoteRepository(id, "default", url);
- rr.setPolicy(snapshot, new RepositoryPolicy(
+ RepositoryPolicy policy = new RepositoryPolicy(
true,
RepositoryPolicy.UPDATE_POLICY_DAILY,
- RepositoryPolicy.CHECKSUM_POLICY_WARN));
- repos.add(rr);
+ RepositoryPolicy.CHECKSUM_POLICY_WARN);
+
+ RemoteRepository.Builder rr = new RemoteRepository.Builder(id, "default", url);
+ if (snapshot) {
+ rr.setSnapshotPolicy(policy);
+ } else {
+ rr.setPolicy(policy);
+ }
+
+ if (proxy != null) {
+ rr.setProxy(proxy);
+ }
+ repos.add(rr.build());
}
}
public void addRepo(String id, String url, boolean snapshot, Authentication auth, Proxy proxy) {
synchronized (repos) {
delRepo(id);
- RemoteRepository rr = new RemoteRepository(id, "default", url);
- rr.setPolicy(snapshot, new RepositoryPolicy(
+ RepositoryPolicy policy = new RepositoryPolicy(
true,
RepositoryPolicy.UPDATE_POLICY_DAILY,
- RepositoryPolicy.CHECKSUM_POLICY_WARN));
- rr.setAuthentication(auth);
- rr.setProxy(proxy);
- repos.add(rr);
+ RepositoryPolicy.CHECKSUM_POLICY_WARN);
+
+ RemoteRepository.Builder rr = new RemoteRepository.Builder(id, "default", url).setAuthentication(auth).setProxy(proxy);
+ if (snapshot) {
+ rr.setSnapshotPolicy(policy);
+ } else {
+ rr.setPolicy(policy);
+ }
+ repos.add(rr.build());
}
}
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 24b8331..0dfdf16 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
@@ -18,22 +18,32 @@
package org.apache.zeppelin.dep;
import org.apache.commons.lang3.Validate;
-import org.apache.maven.repository.internal.MavenRepositorySystemSession;
import org.apache.zeppelin.conf.ZeppelinConfiguration;
+import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
+import org.eclipse.aether.DefaultRepositorySystemSession;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.repository.Authentication;
+import org.eclipse.aether.repository.LocalRepository;
+import org.eclipse.aether.repository.Proxy;
+import org.eclipse.aether.repository.RemoteRepository;
+import org.eclipse.aether.util.repository.AuthenticationBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.sonatype.aether.RepositorySystem;
-import org.sonatype.aether.RepositorySystemSession;
-import org.sonatype.aether.repository.LocalRepository;
-import org.sonatype.aether.repository.RemoteRepository;
+import java.net.MalformedURLException;
+import java.net.URL;
import java.nio.file.Paths;
/**
* Manage mvn repository.
*/
public class Booter {
- private static Logger logger = LoggerFactory.getLogger(Booter.class);
+ private static final Logger LOGGER = LoggerFactory.getLogger(Booter.class);
+
+ private Booter() {
+ // only a helper
+ }
public static RepositorySystem newRepositorySystem() {
return RepositorySystemFactory.newRepositorySystem();
@@ -43,12 +53,12 @@ public class Booter {
RepositorySystem system, String localRepoPath) {
Validate.notNull(localRepoPath, "localRepoPath should have a value");
- MavenRepositorySystemSession session = new MavenRepositorySystemSession();
+ DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();
LocalRepository localRepo = new LocalRepository(resolveLocalRepoPath(localRepoPath));
- session.setLocalRepositoryManager(system.newLocalRepositoryManager(localRepo));
+ session.setLocalRepositoryManager(system.newLocalRepositoryManager(session, localRepo));
- if (logger.isDebugEnabled()) {
+ if (LOGGER.isDebugEnabled()) {
session.setTransferListener(new TransferListener());
session.setRepositoryListener(new RepositoryListener());
}
@@ -72,7 +82,7 @@ public class Booter {
return Paths.get(home).resolve(localRepoPath).toAbsolutePath().toString();
}
- public static RemoteRepository newCentralRepository() {
+ public static RemoteRepository newCentralRepository(Proxy proxy) {
String mvnRepo = System.getenv("ZEPPELIN_INTERPRETER_DEP_MVNREPO");
if (mvnRepo == null) {
mvnRepo = ZeppelinConfiguration.create().getString(
@@ -81,12 +91,15 @@ public class Booter {
if (mvnRepo == null) {
mvnRepo = "https://repo1.maven.org/maven2/";
}
-
- return new RemoteRepository("central", "default", mvnRepo);
+ RemoteRepository.Builder centralBuilder = new RemoteRepository.Builder("central", "default", mvnRepo);
+ if (proxy != null) {
+ centralBuilder.setProxy(proxy);
+ }
+ return centralBuilder.build();
}
public static RemoteRepository newLocalRepository() {
- return new RemoteRepository("local",
- "default", "file://" + System.getProperty("user.home") + "/.m2/repository");
+ return new RemoteRepository.Builder("local",
+ "default", "file://" + System.getProperty("user.home") + "/.m2/repository").build();
}
}
diff --git a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/DependencyContext.java b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/DependencyContext.java
deleted file mode 100644
index 9bac9e4..0000000
--- a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/DependencyContext.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.zeppelin.dep;
-
-import java.io.File;
-import java.net.MalformedURLException;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.sonatype.aether.RepositorySystem;
-import org.sonatype.aether.RepositorySystemSession;
-import org.sonatype.aether.artifact.Artifact;
-import org.sonatype.aether.collection.CollectRequest;
-import org.sonatype.aether.graph.DependencyFilter;
-import org.sonatype.aether.repository.RemoteRepository;
-import org.sonatype.aether.resolution.ArtifactResolutionException;
-import org.sonatype.aether.resolution.ArtifactResult;
-import org.sonatype.aether.resolution.DependencyRequest;
-import org.sonatype.aether.resolution.DependencyResolutionException;
-import org.sonatype.aether.util.artifact.DefaultArtifact;
-import org.sonatype.aether.util.artifact.JavaScopes;
-import org.sonatype.aether.util.filter.DependencyFilterUtils;
-import org.sonatype.aether.util.filter.PatternExclusionsDependencyFilter;
-
-
-/**
- *
- */
-public class DependencyContext {
- List<Dependency> dependencies = new LinkedList<>();
- List<Repository> repositories = new LinkedList<>();
-
- List<File> files = new LinkedList<>();
- List<File> filesDist = new LinkedList<>();
- private RepositorySystem system = Booter.newRepositorySystem();
- private RepositorySystemSession session;
- private RemoteRepository mavenCentral = Booter.newCentralRepository();
- private RemoteRepository mavenLocal = Booter.newLocalRepository();
-
- public DependencyContext(String localRepoPath) {
- session = Booter.newRepositorySystemSession(system, localRepoPath);
- }
-
- public Dependency load(String lib) {
- Dependency dep = new Dependency(lib);
-
- if (dependencies.contains(dep)) {
- dependencies.remove(dep);
- }
- dependencies.add(dep);
- return dep;
- }
-
- public Repository addRepo(String name) {
- Repository rep = new Repository(name);
- repositories.add(rep);
- return rep;
- }
-
- public void reset() {
- dependencies = new LinkedList<>();
- repositories = new LinkedList<>();
-
- files = new LinkedList<>();
- filesDist = new LinkedList<>();
- }
-
-
- /**
- * fetch all artifacts
- * @return
- * @throws MalformedURLException
- * @throws ArtifactResolutionException
- * @throws DependencyResolutionException
- */
- public List<File> fetch() throws MalformedURLException,
- DependencyResolutionException, ArtifactResolutionException {
-
- for (Dependency dep : dependencies) {
- if (!dep.isLocalFsArtifact()) {
- List<ArtifactResult> artifacts = fetchArtifactWithDep(dep);
- for (ArtifactResult artifact : artifacts) {
- if (dep.isDist()) {
- filesDist.add(artifact.getArtifact().getFile());
- }
- files.add(artifact.getArtifact().getFile());
- }
- } else {
- if (dep.isDist()) {
- filesDist.add(new File(dep.getGroupArtifactVersion()));
- }
- files.add(new File(dep.getGroupArtifactVersion()));
- }
- }
-
- return files;
- }
-
- private List<ArtifactResult> fetchArtifactWithDep(Dependency dep)
- throws DependencyResolutionException, ArtifactResolutionException {
- Artifact artifact = new DefaultArtifact(dep.getGroupArtifactVersion());
-
- DependencyFilter classpathFilter = DependencyFilterUtils
- .classpathFilter(JavaScopes.COMPILE);
- PatternExclusionsDependencyFilter exclusionFilter = new PatternExclusionsDependencyFilter(
- dep.getExclusions());
-
- CollectRequest collectRequest = new CollectRequest();
- collectRequest.setRoot(new org.sonatype.aether.graph.Dependency(artifact,
- JavaScopes.COMPILE));
-
- collectRequest.addRepository(mavenCentral);
- collectRequest.addRepository(mavenLocal);
- for (Repository repo : repositories) {
- RemoteRepository rr = new RemoteRepository(repo.getId(), "default", repo.getUrl());
- rr.setPolicy(repo.isSnapshot(), null);
- collectRequest.addRepository(rr);
- }
-
- DependencyRequest dependencyRequest = new DependencyRequest(collectRequest,
- DependencyFilterUtils.andFilter(exclusionFilter, classpathFilter));
-
- return system.resolveDependencies(session, dependencyRequest).getArtifactResults();
- }
-
- public List<File> getFiles() {
- return files;
- }
-
- public List<File> getFilesDist() {
- return filesDist;
- }
-}
diff --git a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/DependencyResolver.java b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/DependencyResolver.java
index 753163c..8033bd9 100644
--- a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/DependencyResolver.java
+++ b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/DependencyResolver.java
@@ -27,28 +27,29 @@ import java.util.List;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
+import org.eclipse.aether.RepositoryException;
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.artifact.DefaultArtifact;
+import org.eclipse.aether.collection.CollectRequest;
+import org.eclipse.aether.graph.Dependency;
+import org.eclipse.aether.graph.DependencyFilter;
+import org.eclipse.aether.repository.Proxy;
+import org.eclipse.aether.repository.RemoteRepository;
+import org.eclipse.aether.resolution.ArtifactResult;
+import org.eclipse.aether.resolution.DependencyRequest;
+import org.eclipse.aether.resolution.DependencyResolutionException;
+import org.eclipse.aether.util.artifact.JavaScopes;
+import org.eclipse.aether.util.filter.DependencyFilterUtils;
+import org.eclipse.aether.util.filter.PatternExclusionsDependencyFilter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.sonatype.aether.RepositoryException;
-import org.sonatype.aether.artifact.Artifact;
-import org.sonatype.aether.collection.CollectRequest;
-import org.sonatype.aether.graph.Dependency;
-import org.sonatype.aether.graph.DependencyFilter;
-import org.sonatype.aether.repository.RemoteRepository;
-import org.sonatype.aether.resolution.ArtifactResult;
-import org.sonatype.aether.resolution.DependencyRequest;
-import org.sonatype.aether.resolution.DependencyResolutionException;
-import org.sonatype.aether.util.artifact.DefaultArtifact;
-import org.sonatype.aether.util.artifact.JavaScopes;
-import org.sonatype.aether.util.filter.DependencyFilterUtils;
-import org.sonatype.aether.util.filter.PatternExclusionsDependencyFilter;
/**
* Deps resolver.
* Add new dependencies from mvn repo (at runtime) to Zeppelin.
*/
public class DependencyResolver extends AbstractDependencyResolver {
- private Logger logger = LoggerFactory.getLogger(DependencyResolver.class);
+ private static final Logger LOGGER = LoggerFactory.getLogger(DependencyResolver.class);
private final String[] exclusions = new String[] {"org.apache.zeppelin:zeppelin-zengine",
"org.apache.zeppelin:zeppelin-interpreter",
@@ -58,13 +59,17 @@ public class DependencyResolver extends AbstractDependencyResolver {
super(localRepoPath);
}
+ public DependencyResolver(String localRepoPath, Proxy proxy) {
+ super(localRepoPath, proxy);
+ }
+
public List<File> load(String artifact)
- throws RepositoryException, IOException {
- return load(artifact, new LinkedList<String>());
+ throws RepositoryException {
+ return load(artifact, new LinkedList<>());
}
-
+
public synchronized List<File> load(String artifact, Collection<String> excludes)
- throws RepositoryException, IOException {
+ throws RepositoryException {
if (StringUtils.isBlank(artifact)) {
// Skip dependency loading if artifact is empty
return new LinkedList<>();
@@ -82,7 +87,7 @@ public class DependencyResolver extends AbstractDependencyResolver {
}
public List<File> load(String artifact, File destPath) throws IOException, RepositoryException {
- return load(artifact, new LinkedList<String>(), destPath);
+ return load(artifact, new LinkedList<>(), destPath);
}
public List<File> load(String artifact, Collection<String> excludes, File destPath)
@@ -96,7 +101,7 @@ public class DependencyResolver extends AbstractDependencyResolver {
File destFile = new File(destPath, srcFile.getName());
if (!destFile.exists() || !FileUtils.contentEquals(srcFile, destFile)) {
FileUtils.copyFile(srcFile, destFile);
- logger.debug("copy {} to {}", srcFile.getAbsolutePath(), destPath);
+ LOGGER.debug("copy {} to {}", srcFile.getAbsolutePath(), destPath);
}
}
}
@@ -114,7 +119,7 @@ public class DependencyResolver extends AbstractDependencyResolver {
if (!destFile.exists() || !FileUtils.contentEquals(srcFile, destFile)) {
FileUtils.copyFile(srcFile, destFile);
- logger.debug("copy {} to {}", srcFile.getAbsolutePath(), destPath);
+ LOGGER.debug("copy {} to {}", srcFile.getAbsolutePath(), destPath);
}
}
@@ -142,7 +147,7 @@ public class DependencyResolver extends AbstractDependencyResolver {
List<File> files = new LinkedList<>();
for (ArtifactResult artifactResult : listOfArtifact) {
files.add(artifactResult.getArtifact().getFile());
- logger.debug("load {}", artifactResult.getArtifact().getFile().getAbsolutePath());
+ LOGGER.debug("load {}", artifactResult.getArtifact().getFile().getAbsolutePath());
}
return files;
diff --git a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/Repository.java b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/Repository.java
index 1524e08..83c6aaa 100644
--- a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/Repository.java
+++ b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/Repository.java
@@ -18,10 +18,12 @@
package org.apache.zeppelin.dep;
import static org.apache.commons.lang3.StringUtils.isNotBlank;
+
import com.google.gson.Gson;
import org.apache.zeppelin.common.JsonSerializable;
-import org.sonatype.aether.repository.Authentication;
-import org.sonatype.aether.repository.Proxy;
+import org.eclipse.aether.repository.Authentication;
+import org.eclipse.aether.repository.Proxy;
+import org.eclipse.aether.util.repository.AuthenticationBuilder;
/**
*
@@ -86,7 +88,7 @@ public class Repository implements JsonSerializable {
public Authentication getAuthentication() {
Authentication auth = null;
if (this.username != null && this.password != null) {
- auth = new Authentication(this.username, this.password);
+ auth = new AuthenticationBuilder().addUsername(this.username).addPassword(this.password).build();
}
return auth;
}
@@ -95,7 +97,7 @@ public class Repository implements JsonSerializable {
if (isNotBlank(proxyHost) && proxyPort != null) {
if (isNotBlank(proxyLogin)) {
return new Proxy(proxyProtocol, proxyHost, proxyPort,
- new Authentication(proxyLogin, proxyPassword));
+ new AuthenticationBuilder().addUsername(proxyLogin).addPassword(proxyPassword).build());
} else {
return new Proxy(proxyProtocol, proxyHost, proxyPort, null);
}
diff --git a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/RepositoryListener.java b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/RepositoryListener.java
index 9f62d5f..01062bf 100644
--- a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/RepositoryListener.java
+++ b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/RepositoryListener.java
@@ -17,10 +17,10 @@
package org.apache.zeppelin.dep;
+import org.eclipse.aether.AbstractRepositoryListener;
+import org.eclipse.aether.RepositoryEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.sonatype.aether.AbstractRepositoryListener;
-import org.sonatype.aether.RepositoryEvent;
/**
* Simple listener that print log.
diff --git a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/RepositorySystemFactory.java b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/RepositorySystemFactory.java
index 9529698..ae353f2 100644
--- a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/RepositorySystemFactory.java
+++ b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/RepositorySystemFactory.java
@@ -17,53 +17,37 @@
package org.apache.zeppelin.dep;
-import org.apache.maven.repository.internal.DefaultServiceLocator;
-import org.apache.maven.wagon.Wagon;
-import org.apache.maven.wagon.providers.http.HttpWagon;
-import org.apache.maven.wagon.providers.http.LightweightHttpWagon;
-import org.apache.maven.wagon.providers.http.LightweightHttpWagonAuthenticator;
-import org.sonatype.aether.RepositorySystem;
-import org.sonatype.aether.connector.file.FileRepositoryConnectorFactory;
-import org.sonatype.aether.connector.wagon.WagonProvider;
-import org.sonatype.aether.connector.wagon.WagonRepositoryConnectorFactory;
-import org.sonatype.aether.spi.connector.RepositoryConnectorFactory;
+import org.eclipse.aether.impl.DefaultServiceLocator;
+import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory;
+import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
+import org.eclipse.aether.spi.connector.transport.TransporterFactory;
+import org.eclipse.aether.transport.file.FileTransporterFactory;
+import org.eclipse.aether.transport.http.HttpTransporterFactory;
+
/**
* Get maven repository instance.
*/
public class RepositorySystemFactory {
public static RepositorySystem newRepositorySystem() {
- DefaultServiceLocator locator = new DefaultServiceLocator();
- locator.addService(RepositoryConnectorFactory.class, FileRepositoryConnectorFactory.class);
- locator.addService(RepositoryConnectorFactory.class, WagonRepositoryConnectorFactory.class);
- locator.setServices(WagonProvider.class, new ManualWagonProvider());
-
- return locator.getService(RepositorySystem.class);
- }
-
- /**
- * ManualWagonProvider
- */
- public static class ManualWagonProvider implements WagonProvider {
-
- @Override
- public Wagon lookup(String roleHint) throws Exception {
- if ("http".equals(roleHint)) {
- LightweightHttpWagon lightweightHttpWagon = new LightweightHttpWagon();
- lightweightHttpWagon.setAuthenticator(new LightweightHttpWagonAuthenticator());
- return lightweightHttpWagon;
- }
-
- if ("https".equals(roleHint)) {
- return new HttpWagon();
- }
-
- return null;
- }
-
- @Override
- public void release(Wagon arg0) {
-
+ DefaultServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator();
+ locator.addService(RepositoryConnectorFactory.class, BasicRepositoryConnectorFactory.class );
+ locator.addService(TransporterFactory.class, FileTransporterFactory.class);
+ locator.addService(TransporterFactory.class, HttpTransporterFactory.class);
+ locator.setErrorHandler( new DefaultServiceLocator.ErrorHandler()
+ {
+ @Override
+ public void serviceCreationFailed( Class<?> type, Class<?> impl, Throwable exception )
+ {
+ exception.printStackTrace();
+ }
+ } );
+ RepositorySystem system = locator.getService(RepositorySystem.class);
+ if (system == null) {
+ throw new RuntimeException();
}
+ return system;
}
}
diff --git a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/TransferListener.java b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/TransferListener.java
index 7f25e3b..1162747 100644
--- a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/TransferListener.java
+++ b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/dep/TransferListener.java
@@ -23,11 +23,11 @@ import java.util.Locale;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
+import org.eclipse.aether.transfer.AbstractTransferListener;
+import org.eclipse.aether.transfer.TransferEvent;
+import org.eclipse.aether.transfer.TransferResource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.sonatype.aether.transfer.AbstractTransferListener;
-import org.sonatype.aether.transfer.TransferEvent;
-import org.sonatype.aether.transfer.TransferResource;
/**
* Simple listener that show deps downloading progress.
diff --git a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterServer.java b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterServer.java
index ebdf815..4051dac 100644
--- a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterServer.java
+++ b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterServer.java
@@ -144,7 +144,7 @@ public class RemoteInterpreterServer extends Thread
private ScheduledExecutorService resultCleanService = Executors.newSingleThreadScheduledExecutor();
private boolean isTest;
-
+
private ZeppelinConfiguration zConf;
// cluster manager client
private ClusterManagerClient clusterManagerClient;
diff --git a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/dep/DependencyResolverTest.java b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/dep/DependencyResolverTest.java
index 96f223c..ceeecd9 100644
--- a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/dep/DependencyResolverTest.java
+++ b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/dep/DependencyResolverTest.java
@@ -23,7 +23,7 @@ import org.junit.BeforeClass;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
-import org.sonatype.aether.RepositoryException;
+import org.eclipse.aether.RepositoryException;
import java.io.File;
import java.io.FileNotFoundException;
diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/InterpreterRestApi.java b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/InterpreterRestApi.java
index 7b12312..de11e35 100644
--- a/zeppelin-server/src/main/java/org/apache/zeppelin/rest/InterpreterRestApi.java
+++ b/zeppelin-server/src/main/java/org/apache/zeppelin/rest/InterpreterRestApi.java
@@ -43,7 +43,7 @@ import org.apache.zeppelin.service.SimpleServiceCallback;
import org.apache.zeppelin.socket.NotebookServer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.sonatype.aether.repository.RemoteRepository;
+import org.eclipse.aether.repository.RemoteRepository;
import javax.validation.constraints.NotNull;
import javax.ws.rs.DELETE;
diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/service/InterpreterService.java b/zeppelin-server/src/main/java/org/apache/zeppelin/service/InterpreterService.java
index ff897f5..7214815 100644
--- a/zeppelin-server/src/main/java/org/apache/zeppelin/service/InterpreterService.java
+++ b/zeppelin-server/src/main/java/org/apache/zeppelin/service/InterpreterService.java
@@ -20,8 +20,6 @@ package org.apache.zeppelin.service;
import com.google.common.collect.Lists;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@@ -37,7 +35,7 @@ import org.apache.zeppelin.interpreter.InterpreterSettingManager;
import org.apache.zeppelin.rest.message.InterpreterInstallationRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.sonatype.aether.RepositoryException;
+import org.eclipse.aether.RepositoryException;
/**
* This class handles all of business logic for {@link org.apache.zeppelin.rest.InterpreterRestApi}
@@ -75,18 +73,6 @@ public class InterpreterService {
final DependencyResolver dependencyResolver = new DependencyResolver(localRepoPath);
- String proxyUrl = conf.getZeppelinProxyUrl();
- if (null != proxyUrl) {
- String proxyUser = conf.getZeppelinProxyUser();
- String proxyPassword = conf.getZeppelinProxyPassword();
- try {
- dependencyResolver.setProxy(new URL(proxyUrl), proxyUser, proxyPassword);
- } catch (MalformedURLException e) {
- // TODO(jl): Not sure if it's good to raise an exception
- throw new Exception("Url is not valid format", e);
- }
- }
-
// TODO(jl): Make a rule between an interpreter name and an installation directory
List<String> possibleInterpreterDirectories = Lists.newArrayList();
possibleInterpreterDirectories.add(interpreterName);
diff --git a/zeppelin-server/src/test/java/org/apache/zeppelin/service/InterpreterServiceTest.java b/zeppelin-server/src/test/java/org/apache/zeppelin/service/InterpreterServiceTest.java
index cc4b1df..5c60366 100644
--- a/zeppelin-server/src/test/java/org/apache/zeppelin/service/InterpreterServiceTest.java
+++ b/zeppelin-server/src/test/java/org/apache/zeppelin/service/InterpreterServiceTest.java
@@ -77,14 +77,6 @@ public class InterpreterServiceTest {
}
@Test(expected = Exception.class)
- public void invalidProxyUrl() throws Exception {
- when(mockZeppelinConfiguration.getZeppelinProxyUrl()).thenReturn("invalidProxyPath");
-
- interpreterService.installInterpreter(
- new InterpreterInstallationRequest("name", "artifact"), null);
- }
-
- @Test(expected = Exception.class)
public void interpreterAlreadyExist() throws Exception {
String alreadyExistName = "aen";
Path specificInterpreterDir =
diff --git a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterInfoSaving.java b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterInfoSaving.java
index cc1c22d..cb7e703 100644
--- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterInfoSaving.java
+++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterInfoSaving.java
@@ -26,7 +26,7 @@ import org.apache.commons.io.IOUtils;
import org.apache.zeppelin.common.JsonSerializable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.sonatype.aether.repository.RemoteRepository;
+import org.eclipse.aether.repository.RemoteRepository;
import java.io.BufferedReader;
import java.io.FileOutputStream;
diff --git a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSettingManager.java b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSettingManager.java
index 2affa5e..3977573 100644
--- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSettingManager.java
+++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSettingManager.java
@@ -68,9 +68,9 @@ import org.eclipse.jetty.util.annotation.ManagedAttribute;
import org.eclipse.jetty.util.annotation.ManagedObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.sonatype.aether.repository.Proxy;
-import org.sonatype.aether.repository.RemoteRepository;
-import org.sonatype.aether.repository.Authentication;
+import org.eclipse.aether.repository.Proxy;
+import org.eclipse.aether.repository.RemoteRepository;
+import org.eclipse.aether.repository.Authentication;
import java.io.File;
import java.io.FileInputStream;
diff --git a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/install/InstallInterpreter.java b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/install/InstallInterpreter.java
index 0817595..13ecb3f 100644
--- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/install/InstallInterpreter.java
+++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/install/InstallInterpreter.java
@@ -20,7 +20,10 @@ import org.apache.commons.io.FileUtils;
import org.apache.zeppelin.conf.ZeppelinConfiguration;
import org.apache.zeppelin.dep.DependencyResolver;
import org.apache.zeppelin.util.Util;
-import org.sonatype.aether.RepositoryException;
+import org.eclipse.aether.repository.Authentication;
+import org.eclipse.aether.repository.Proxy;
+import org.eclipse.aether.util.repository.AuthenticationBuilder;
+import org.eclipse.aether.RepositoryException;
import java.io.File;
import java.io.IOException;
@@ -150,10 +153,12 @@ public class InstallInterpreter {
}
public void install(String name, String artifact) {
- DependencyResolver depResolver = new DependencyResolver(localRepoDir);
+ Proxy proxy = null;
if (proxyUrl != null) {
- depResolver.setProxy(proxyUrl, proxyUser, proxyPassword);
+ Authentication auth = new AuthenticationBuilder().addUsername(proxyUser).addPassword(proxyPassword).build();
+ proxy = new Proxy(proxyUrl.getProtocol(), proxyUrl.getHost(), proxyUrl.getPort(), auth);
}
+ DependencyResolver depResolver = new DependencyResolver(localRepoDir, proxy);
File installDir = new File(interpreterBaseDir, name);
if (installDir.exists()) {
diff --git a/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/InterpreterSettingManagerTest.java b/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/InterpreterSettingManagerTest.java
index 2473977..167cb0f 100644
--- a/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/InterpreterSettingManagerTest.java
+++ b/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/InterpreterSettingManagerTest.java
@@ -24,8 +24,8 @@ import org.apache.zeppelin.display.AngularObjectRegistryListener;
import org.apache.zeppelin.helium.ApplicationEventListener;
import org.apache.zeppelin.interpreter.remote.RemoteInterpreterProcessListener;
import org.junit.Test;
-import org.sonatype.aether.RepositoryException;
-import org.sonatype.aether.repository.RemoteRepository;
+import org.eclipse.aether.RepositoryException;
+import org.eclipse.aether.repository.RemoteRepository;
import java.io.IOException;
import java.util.ArrayList;
diff --git a/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/ManagedInterpreterGroupTest.java b/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/ManagedInterpreterGroupTest.java
index 890bed9..974ddc2 100644
--- a/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/ManagedInterpreterGroupTest.java
+++ b/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/ManagedInterpreterGroupTest.java
@@ -21,7 +21,7 @@ import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.sonatype.aether.RepositoryException;
+import org.eclipse.aether.RepositoryException;
import java.io.IOException;
import java.util.ArrayList;
diff --git a/zeppelin-zengine/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java b/zeppelin-zengine/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java
index a6d647f..20056ec 100644
--- a/zeppelin-zengine/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java
+++ b/zeppelin-zengine/src/test/java/org/apache/zeppelin/notebook/NotebookTest.java
@@ -47,7 +47,7 @@ import org.junit.Test;
import org.quartz.SchedulerException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.sonatype.aether.RepositoryException;
+import org.eclipse.aether.RepositoryException;
import java.io.File;
import java.io.IOException;