原文链接 译者: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。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/99852.html