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;