《Maven官方文件》選擇可移植的Wagon提供者
原文連結 譯者:carvendy
選擇可移植的Wagon提供者
預設,Maven使用java.net.URLConnection(HttpURLConnection)類提供使用JDK接入倉庫使用HTTP/HTTPS協議。不行地,支援這個實現由確定的bug,Maven使用這可能發現不能連結服務端並需要一些配置。一個奇怪的行為例包含著行包裝授權頭Base64值,當密碼很長和使用快取優先可以授權連線同樣的服務端。
Maven 2.2.0 嘗試修改這問題通過Wagon實現基於Apache HttpClient。不幸地,很快地HttpClient不支援NTLM(至少,version 2),影響意味著使用者在代理伺服器在NTLMv2後不能使用Maven 2.2.0。
希望地,解決這些,Maven 2.2.1將支援指定你想使用的Wagon提供者和給定的協議在構建過程中。從role-hint元件為了Wagon,提供者名字將被附加到協議使用的格式==<protocol>-<provider>==。
Maven 2.2.1,兩種方式指定Wagon提供者應該使用:命令列,或者==<server>配置部分在settings.xml==。
命令列配置
從命令指定Wagon提供者,簡單地使用== -Dmaven.wagon.provider.<protocol>=<provider-name>== 命令選擇,想這樣:
mvn -Dmaven.wagon.provider.http=httpclient clean install
指示Maven使用HttpClient基於Wagon實現為了連線HTTP倉庫。
setting.xml配置
指定Wagon提供者使用的特殊服務,修改你的settings.xml 檔案加入==<wagonProvider>配置到你的==<server>==實體,像下面這樣:
<settings>
[...]
<servers>
<server>
<id>central</id >
<configuration>
<wagonProvider>httpclient</wagonProvider>
[...]
</configuration>
</server>
可用的Wagon提供者
Maven 2.2.1提供者提供兩種給HTTP/HTTPS Wagons;lightweight == 和httpclient==。如果你加入新的HTTP Wagon實現通過構建的拓展,你將需要確定拓展繫結Wagon元件 role-hints從==<protocol>-<provider>==為了允許使用者可以指定值可移植的Wagon提供者。作為例子,HttpClient HTTP Wagon元件定義如下:
<component>
<role>org.apache.maven.wagon.Wagon</role>
<role-hint>http-httpclient</role-hint>
<implementation>org.apache.maven.wagon.providers.http.HttpWagon</implementation>
<instantiation-strategy>per-lookup</instantiation-strategy>
</component>
注意:預設HTTP/HTTPS Wagon提供者是lightweight。