我想分享我通过代理使用maven的经验。
你最有可能面临的异常和消息,如:
repository metadata for: 'org.apache.maven.plugins' could not be retrieved from
repository: central due to an error: Error transferring file: Connection refused: connect
要么
[WARNING] Failed to retrieve plugin descriptor for org.apache.maven.plugins:maven-clean-
plugin:2.5: Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its
dependencies could not be resolved: Failed to read artifact descriptor for
org.apache.maven.plugins:maven-clean-plugin:jar:2.5
如何配置Maven使用代理服务器?
Answer 1:
对于建立一个Maven的代理的详细信息,请参阅微型导轨 。
从本质上讲,你需要确保在全局设置中的代理部分( [maven install]/conf/settings.xml
),或用户设置( ${user.home}/.m2/settings.xml
)配置是否正确。 这是更好地做到这一点在你的用户设置,以避免采用明文存储密码在一个公共场所。
Maven的2.1引入了密码加密 ,但我还没有得到全面检查,如果加密适用于代理设置以及存储库的密码(不明白为什么它不会虽然)。
对于信息,有一个在您的settings.xml和指令的注释掉的代理配置如何修改它。
从迷你指南,您的设置应该是这个样子:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
[...]
<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>
Answer 2:
如何使用socks代理?
建立一个SSH隧道到服务器的地方:
ssh -D $PORT $USER@$SERVER
Linux操作系统(bash)的:
export MAVEN_OPTS="-DsocksProxyHost=127.0.0.1 -DsocksProxyPort=$PORT"
视窗:
set MAVEN_OPTS="-DsocksProxyHost=127.0.0.1 -DsocksProxyPort=$PORT"
Answer 3:
我也有这个问题,我在我的文件夹中的.m2编辑settings.xml文件解决它。 我的settings.xml是现在这个样子:
<settings>
<proxies>
<proxy>
<id>genproxy</id>
<active>true</active>
<protocol>http</protocol>
<host>proxyHost</host>
<port>3128</port>
<username>username</username>
<password>password</password>
</proxy>
</proxies>
</settings>
Answer 4:
还要注意的是一些插件(远程资源浮现在脑海)使用仅接受通过MAVEN_OPTS代理服务器配置一个真正的老图书馆;
-Dhttp.proxyHost=<host> -Dhttp.proxyPort=<port> -Dhttps.proxyHost=<host> -Dhttps.proxyPort=<port>
你可能会停留在身份验证这一个。
Answer 5:
要设置Maven的代理 :
编辑你的〜/ .m2目录/ settings.xml文件中的代理服务器会话。 如果你不能找到该文件,创建一个。
<settings>
<proxies>
<proxy>
<id>httpproxy</id>
<active>true</active>
<protocol>http</protocol>
<host>your-proxy-host</host>
<port>your-proxy-port</port>
<nonProxyHosts>local.net|some.host.com</nonProxyHosts>
</proxy>
<proxy>
<id>httpsproxy</id>
<active>true</active>
<protocol>https</protocol>
<host>your-proxy-host</host>
<port>your-proxy-port</port>
<nonProxyHosts>local.net|some.host.com</nonProxyHosts>
</proxy>
</proxies>
</settings>
要么
编辑您的{M2_HOME} /conf/settings.xml的代理会议
希望能帮助到你.. :)
Answer 6:
我想补充我自己的经历与此:我公司的代理是http://webproxy.intra.companyname.com:3128
。 对Maven通过这个代理工作,设置必须完全一样
<settings>
<proxies>
<proxy>
<id>default</id>
<active>true</active>
<protocol>http</protocol>
<host>webproxy.intra.companyname.com</host>
<port>3128</port>
</proxy>
</proxies>
</settings>
不像其他一些代理的配置文件,该protocol
在这里介绍了如何连接到代理服务器,而不是哪种协议应该被代理。 该http
目标的一部分,必须从主机名分裂出去,否则将无法正常工作。
Answer 7:
那些最有可能造成2个问题:
- 您需要将代理配置添加到您的settings.xml。 下面是你的用户名外地一招。 确保它看起来像域\用户名。 有设置域和把这种精确的斜杠是重要的“\”。 您可能需要使用<![CDATA []]>标记,如果您的密码包含非XML型人物。
- 我注意到的maven 2.2.0不通过代理有时在所有的工作,其中2.2.1工作完全正常。
如果其中的一些被省略 - 行家可能会失败,并随机错误信息。
只是希望我已经从解决此问题,谷歌搜索6小时,像我一样救别人。
Answer 8:
谢谢@krosenvold。
如果设置文件的更改不起作用,试试这个在具有POM文件中的命令提示符。
mvn install -Dhttp.proxyHost=abcproxy -Dhttp.proxyPort=8080 -Dhttps.proxyHost=abcproxy -Dhttps.proxyPort=8080
这一个密码更改后,立即帮助了我。
Answer 9:
并加入到这个话题,我这里还有我的经验,下面...非常奇怪和耗时的,所以我认为这是值得加入。
我也曾有过类似的问题,尝试在Windows内置的portlet的桥梁,得到了以下错误:
Downloading: http://repo1.maven.org/maven2/org/apache/portals/bridges-pom/1.0/bridges-pom-1.0.pom
[DEBUG] Reading resolution tracking file C:\Documents and Settings\myuser\.m2\repository\org\apache\portals\bridges-pom\1.0\bridges-pom-1.0.pom.lastUpdated
[DEBUG] Writing resolution tracking file C:\Documents and Settings\myuser\.m2\repository\org\apache\portals\bridges-pom\1.0\bridges-pom-1.0.pom.lastUpdated
[ERROR] The build could not read 1 project -> [Help 1]
org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs:
[FATAL] Non-resolvable parent POM: Could not transfer artifact
org.apache.portals:bridges-pom:pom:1.0 from/to central (http://repo1.maven.org/maven2): Error transferring file: repo1.maven.org and 'parent.relativePath' points at wrong local
POM @ line 23, column 11
...
[ERROR] The project org.apache.portals.bridges:portals-bridges-common:2.0 (H:\path_to_project\portals-bridges-common-2.0\pom.xml) has 1 error
[ERROR] Non-resolvable parent POM: Could not transfer artifact org.apache.portals:bridges-pom:pom:1.0 from/to central (http://repo1.maven.org/maven2):
Error transferring file: repo1.maven.org and 'parent.relativePath' points at wrong local POM @ line 23, column 11: Unknown host repo1.maven.org -> [Help 2]
...
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException
[ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/UnresolvableModelException
我试了几件事情,下面有点冲浪:
试图设置parent.relativePath为空,以便行家没想到父母是本地的。 这是因为每个建议对SO在哈德森建立失败:非解析父POM ,并在此nabble论坛 。 这是没有效果的。
我也试过确保库中的settings.xml我被明确列出,但这个没有任何影响。
然后我保证MVN被迫查找存储库,而不是依赖于它自己的历史,讨论通过Sarthon这个博客 。 不幸的是,这不是问题,无论是。
在一些无奈之下,我再重新审视我的MAVEN_OPTS,以确保我没有落下的我的代理服务器设置犯规。 这是正确的,尽管不带引号的值:
设置MAVEN_OPTS = -Dhttp.proxyHost = myproxy.mycompany.com -Dhttp.proxyPort = 8080 -Xmx256m
所以,最后,我搬到代理配置到我的settings.xml和这工作:
<proxies>
<proxy>
<id>genproxy</id>
<active>true</active>
<protocol>http</protocol>
<!--username>proxyuser</username-->
<!--password>proxypass</password-->
<host>myproxy.mycompany.com</host>
<port>8080</port>
<nonProxyHosts>*.mycompany.com|127.0.0.1</nonProxyHosts>
</proxy>
</proxies>
真的不知道为什么我原来MAVEN_OPTS不能正常工作(行情?),而settings.xml中配置没有工作。 我想扭转固定,并再次检查每一个步骤,但也浪费了太多的时间。 将报告到什么时候。
Answer 10:
我知道这是不是一个真正的问题的答案,但它可能是值得知道的人搜索这个职位。 也可以安装像Maven仓库代理关系 。
你的Maven将被配置成联系当地的Nexus代理,然后会的Nexus检索(和缓存)的工件。 它可以通过一个网络接口被配置,并且具有用于(HTTP)代理)的支持。
这可能是一种优势,尤其是在公司的设置,因为文物在本地使用,并且可以快速下载,您不依赖外部Maven仓库的可用性了。
要链接到的问题; 使用Nexus没有为代理配置提供了很好的图形界面,它需要在一个地方做而已,而不是每一个开发人员。
Answer 11:
我跑cntlm
localy,与配置NTLMv2
密码哈希值与企业的代理,并使用认证
export MAVEN_OPTS="-DproxyHost=127.0.0.1 -DproxyPort=3128"
使用该代理的maven
。 当然,你应该使用支持代理cntlm
/ NTLMv2
。
Answer 12:
如果行家致力于通过代理,但不是有些正在调用的插件,可以尝试设置JAVA_TOOL_OPTIONS
以及与-Dhttp*.proxy*
设置。
如果您已经JAVA_OPTS
只是做
export JAVA_TOOL_OPTIONS=$JAVA_OPTS
Answer 13:
除上述提到的技术,具有一定的努力,你可以使用jproxyloader库通过代理运行Maven(有例如页面上如何做到这一点: http://jproxyloader.sourceforge.net/ )。 这允许设置socks代理只下载文物。
在通过duanni提到溶液(设定-DsocksProxyHost)有一个问题。 如果你对本地数据库运行的集成测试(或连接到URL不应该通过代理去另一个测试)。 这些测试将停止工作,因为数据库连接也将被引导到代理。 随着jProxyLoader的帮助,您可以只为纽带主机设置代理。 此外,如果你愿意,你可以通过其他代理传递到数据库连接。
Answer 14:
你需要一些时间来添加其他<proxy></proxy>
在协议标签标签,并指定https: <protocol>https</protocol>
Answer 15:
上述帖子帮助解决我的问题。 除了上述我不得不作出以下修改,使其工作:
修改Maven的JRE网设置(\ JRE \ LIB \ net.properties)使用系统代理设置。
https.proxyHost=proxy DNS https.proxyPort=proxy port
Settings.XML中包含的代理服务器设置。 我没有提供用户名和密码设置为使用NTLM身份验证。
文章来源: How do I use Maven through a proxy?