1. 程式人生 > >《Maven官方文件》選擇可移植的Wagon提供者

《Maven官方文件》選擇可移植的Wagon提供者

原文連結   譯者:carvendy

選擇可移植的Wagon提供者

預設,Maven使用java.net.URLConnectionHttpURLConnection)類提供使用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