我正在使用Ubuntu和Gnome,我可以设置网络代理设置(带身份验证)。
问题是:如何在命令行中运行maven并使其使用此代理?
答案 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
中读取代理设置。