如何使maven使用系统代理设置

时间:2010-08-30 14:50:36

标签: maven-2

我正在使用Ubuntu和Gnome,我可以设置网络代理设置(带身份验证)。

问题是:如何在命令行中运行maven并使其使用此代理?

4 个答案:

答案 0 :(得分:27)

你看过http://maven.apache.org/guides/mini/guide-proxies.html吗?

在您的settings.xml中:

<settings>
  .
  .
  <proxies>
   <proxy>
      <active>true</active>
      <protocol>http</protocol>
      <host>proxy.somewhere.com</host>
      <port>8080</port>
      <username>proxyuser</username>
      <password>somepassword</password>
      <nonProxyHosts>www.google.com|*.somewhere.com</nonProxyHosts>
    </proxy>
  </proxies>
  .
  .
</settings>

注意:这不会影响Java代码!这些代理设置是Maven存储库代理设置。

答案 1 :(得分:20)

可以将java.net.useSystemProxies系统属性设置为true(在Windows和Linux平台上),以告诉JVM使用系统代理设置。来自Java Networking and Proxies指南:

  

在我们详细了解如何编写这样的ProxySelector之前,让我们先谈谈默认的问题。 J2SE 5.0提供了一个强制向后兼容的默认实现。换句话说,默认ProxySelector将检查前面描述的系统属性,以确定要使用的代理。但是,有一个新的可选功能:在最近的Windows系统和Gnome 2.x平台上,可以告诉默认ProxySelector使用系统代理设置(最新版本的Windows和Gnome 2.x)让你通过他们的用户界面全局设置代理)。如果系统属性java.net.useSystemProxies设置为true(默认情况下,为了兼容性而将其设置为false),则默认ProxySelector将尝试使用这些设置。您可以在命令行上设置该系统属性,也可以编辑JRE安装文件lib/net.properties,这样您只需在给定系统上更改一次。

但是这只适用于java.net.*类,而不适用于commons-httpclient,jsch等。所以这并不能解决整个问题而且Maven并不真正支持它(这被记录为{ {3}})。

换句话说,我担心您必须在~/.m2/settings.xml中配置代理设置。

答案 2 :(得分:6)

需要通过命令行设置这些设置的用户可以使用以下命令:

/app

用法:

MAVEN_CLI_OPTS: "-DproxySet=true -Dhttp.proxyHost=yourProxyHost -Dhttp.proxyPort=9999 -Dhttp.nonProxyHosts=mvnrepository.com"

警告: 从CI环境中使用nonProxyHosts属性时,我无法正常工作。我怀疑这可能是因为在Gitlab的YAML语法中没有正确解释管道字符,但我没有找到解决方法。

来源:https://confluence.atlassian.com/jirakb/java-option-http-nonproxyhosts-does-not-work-214863640.html

答案 3 :(得分:0)

在Netbeans中,您必须从-Djava.net.useSystemProxies=true中删除Tools-> option->java->Maven。删除后,Maven会从settings.xml中读取代理设置。