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

Maven 2 如何使maven使用系统代理设置,maven-2,Maven 2,我将Ubuntu与Gnome一起使用,在那里我可以设置网络代理设置(带有身份验证) 问题是:如何在命令行中运行maven并使其使用此代理?您看过吗 在settings.xml中: <settings> . . <proxies> <proxy> <active>true</active> <protocol>http</protocol> <host&g

我将Ubuntu与Gnome一起使用,在那里我可以设置网络代理设置(带有身份验证)

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

您看过吗

在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>

.
.
真的
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起作用