Maven 2 如何使maven使用系统代理设置
我将Ubuntu与Gnome一起使用,在那里我可以设置网络代理设置(带有身份验证) 问题是:如何在命令行中运行maven并使其使用此代理?您看过吗 在settings.xml中:Maven 2 如何使maven使用系统代理设置,maven-2,Maven 2,我将Ubuntu与Gnome一起使用,在那里我可以设置网络代理设置(带有身份验证) 问题是:如何在命令行中运行maven并使其使用此代理?您看过吗 在settings.xml中: <settings> . . <proxies> <proxy> <active>true</active> <protocol>http</protocol> <host&g
<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>
.
.
真的
http
proxy.somewhere.com
8080
代理用户
密码
www.google.com |*.somewhere.com
.
.
注意:这不会影响Java代码!这些代理设置是Maven repository代理设置。有一个
java.net.useSystemProxies
系统属性,可以将该属性设置为true
(在Windows和Linux平台上),以告知JVM使用系统代理设置。从指南中:
在详细了解如何编写这样一个ProxySelector
之前,让我们先讨论一下默认的。J2SE5.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也不真正支持它(记录为)
换句话说,恐怕您必须在
~/.m2/settings.xml
中配置代理设置。在Netbeans中,您必须从工具->选项->java->Maven
中删除-Djava.net.useSystemProxies=true
。删除后,Maven将从settings.xml
读取代理设置需要通过命令行设置这些设置的用户可以使用以下命令:
MAVEN_CLI_OPTS: "-DproxySet=true -Dhttp.proxyHost=yourProxyHost -Dhttp.proxyPort=9999 -Dhttp.nonProxyHosts=mvnrepository.com"
用法:
mvn $MAVEN_CLI_OPTS test
警告:
从CI环境中使用nonProxyHosts属性时,该属性对我来说无法正常工作。我怀疑这可能是因为Gitlab的YAML语法没有正确解释管道字符,但我没有找到解决方法
来源:始终记得检查$home/.m2/settings.xml和$m2_home/conf/settings.xml,我花了大约半个小时禁用代理,因为它是在maven binaries文件夹中启用的。如果文件不存在,您可能必须创建该文件。请记住,用户名和密码不是必需的,但不会使用NTLM代理。正如@Iwpro2所说,我花了一段时间才弄明白:用户名和密码不是强制性的!!因为我必须在企业中使用NTLM代理,所以这是唯一一个对我来说有点简洁的建议。Gradle opts可以无缝工作。如果您使用
MAVEN_opts
变量,则无需显式地将其传递给mvn
命令,因为它是自动使用的。对我不起作用,但settings.xml起作用