我想分享我通過代理使用maven的經驗。如何通過代理使用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
如何配置Maven使用代理服務器?
我想分享我通過代理使用maven的經驗。如何通過代理使用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
如何配置Maven使用代理服務器?
那些最有可能造成2個問題:
如果其中的一些被省略 - 行家可能會失敗,並隨機錯誤信息。
只希望我已經保存了一些人在這個問題上搜索了6個小時,就像我一樣。
您是否使用NTLM代理?從迷你指南:「請注意,由於它們尚未經過測試,因此不支持NTLM代理,您可能可以在JDK 1.4+上使用相關的系統屬性來完成此項工作。」 – 2009-08-09 11:46:57
對此不確定。這是一個公司代理,實際上距離我600英里,系統管理人員本週末沒有任職。所以現在不能問任何人。這將是有趣的發現。我知道它支持http,socks和其他協議。也許它也是NTML。 – Bogdan 2009-08-09 11:55:11
對於建立一個Maven的代理的詳細信息,請參閱mini guide。
本質上,您需要確保全局設置([maven install]/conf/settings.xml
)或用戶設置(${user.home}/.m2/settings.xml
)中的代理部分配置正確。最好在用戶設置中執行此操作,以避免在公共位置以純文本形式存儲密碼。
Maven 2.1介紹password encryption,但我沒有仔細檢查加密是否適用於代理設置以及存儲庫密碼(不知道爲什麼它不會)。
有關信息,有一個在您的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>
我知道這不是一個真正的問題的答案,但它可能是值得知道的人搜索這篇文章。也可以安裝一個像nexus這樣的Maven倉庫代理。
你的Maven將被配置成聯繫當地的Nexus代理,然後會的Nexus檢索(和緩存)的工件。它可以通過Web界面進行配置,並支持(http)代理)。
這可能是一種優勢,尤其是在公司的設置,因爲文物在本地使用,可以下載速度快,你是不是依賴外部Maven倉庫的可用性了。
要回到問題; Nexus的代理配置有一個很好的GUI,它只需要在一個地方完成,而不是每個開發人員。
建立一個SSH隧道某處的服務器:
ssh -D $PORT [email protected]$SERVER
的Linux(慶典):
export MAVEN_OPTS="-DsocksProxyHost=127.0.0.1 -DsocksProxyPort=$PORT"
的Windows:
set MAVEN_OPTS="-DsocksProxyHost=127.0.0.1 -DsocksProxyPort=$PORT"
通過'MAVEN_OPTS'使用socks代理是我可以讓Maven通過HTTPS下載的唯一方法。使用HTTP或HTTPS代理,通過'MAVEN_OPTS'或'settings.xml',產生 'org.apache.maven.wagon.providers.http.httpclient.impl.execchain.RetryExec執行 信息:I/O異常java.net.SocketException)在處理請求到{tls}時被捕獲 - > http://proxy.mycompany.com:911-> https://repo.maven.apache.org:443:SOCKS:TTL已過期' – 2016-12-08 03:07:22
,並添加到th是主題,這裏是我的經驗...真奇怪,耗時,所以我認爲值得添加。
我也曾有過類似的問題,試圖建立的門戶橋在Windows上,得到了以下錯誤:
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設置爲空,以便maven認爲父級不是本地的。這是根據對SO的建議Hudson build fail: Non-resolvable parent POM和in this nabble forum。這沒有效果。
我也嘗試確保存儲庫明確列在我的settings.xml中,但這也沒有效果。
然後,我確保mvn被迫查找存儲庫,而不是依靠它自己的歷史記錄,如this blog by 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>
真的不知道爲什麼而settings.xml的配置確實W¯¯我原來MAVEN_OPTS不能正常工作(行情?)掃。我想扭轉修復方法並再次檢查每一步,但浪費了太多時間。將會在什麼時候回報。
Did你實際上在MAVEN_OPTS中指定了一個用戶名和密碼? – bcmoney 2012-12-04 17:48:05
我不認爲我這樣做,但後來我不需要爲我的代理服務器。正如你所看到的,這是可能的。除了安全問題,你可以試試看。我收集你仍然有問題有這麼遠嗎? – wmorrison365 2012-12-05 09:47:43
我也有這個問題,我通過編輯我的.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>
還要注意,一些插件(遠程資源浮現在腦海)使用僅接受通過MAVEN_OPTS代理服務器配置一個真正的老圖書館;
-Dhttp.proxyHost=<host> -Dhttp.proxyPort=<port> -Dhttps.proxyHost=<host> -Dhttps.proxyPort=<port>
你可能會被卡在auth上。
除了上面提到的技術,通過一些努力,你可以通過代理使用jproxyloader庫運行maven(在頁面上有如何做到這一點的示例:http://jproxyloader.sourceforge.net/)。這允許設置襪子代理僅用於下載工件。
在duanni提到的解決方案(設置-DsocksProxyHost)中有一個問題。如果您有針對本地數據庫運行的集成測試(或者連接到不應通過代理的url的其他測試)。這些測試將停止工作,因爲與數據庫的連接也將被定向到代理。在jProxyLoader的幫助下,您可以爲nexus主機設置代理。另外如果你想要,你可以通過另一個代理傳遞連接到數據庫。
上述貼子有助於解決我的問題。除了上述我不得不作出以下修改,使其工作:
修改Maven的JRE網設置(\ JRE \ LIB \ net.properties)使用系統代理設置。 https.proxyHost =代理DNS https.proxyPort =代理端口
我想補充我自己的經歷與此:我公司的代理是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>
不像其他一些代理的配置文件,這裏介紹如何連接到代理服務器,沒有哪種協議應該被代理。目標的http
部分必須從主機名中分離出來,否則它將無法工作。
在這個時候,我剛剛經歷了相反的嘗試。這裏的協議是描述哪個協議應該使用這個代理。我剛剛實現了通過使用
配置https協議代理連接到http代理謝謝!這對我有用!我有「http://」前置,它會失敗 – 2018-01-12 21:02:00
如果maven通過代理工作,但不是它正在調用的某些插件,請嘗試設置JAVA_TOOL_OPTIONS
以及-Dhttp*.proxy*
設置。
如果您已經JAVA_OPTS
只是做
export JAVA_TOOL_OPTIONS=$JAVA_OPTS
要設置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的代理會話
希望它有助於.. :)
感謝@krosenvold。
如果設置文件更改無效,請在具有POM文件的命令提示符下嘗試此操作。
E:\的myproject> MVN安裝-Dhttp.proxyHost = abcproxy -Dhttp.proxyPort = 8080 -Dhttps.proxyHost = abcproxy -Dhttps.proxyPort = 8080
這一個密碼更改後,立即幫助了我。
(任何人)把這個改爲一個實際的問題(如:我如何通過代理使用Maven?)?然後,您可以發佈您的問題主體作爲答案,以更直接與StackOverflow格式.. – Tim 2009-08-09 11:30:55
我已經爲您改寫了它Bogdan,請發佈您的原始內容作爲答案,如果您願意 – 2009-08-09 11:44:27
看起來像我們編輯在相同時間 – 2009-08-09 11:45:46