天天看点

Maven实战. 2.4设置HTTP代理

<b>2.4设置http代理</b>

有时候你所在的公司基于安全因素考虑,要求你使用通过安全认证的代理访问因特网。这种情况下,就需要为maven配置http代理,才能让它正常访问外部仓库,以下载所需要的资源。

首先确认自己无法直接访问公共的maven中央仓库,直接运行命令ping repo1.maven.org可以检查网络。如果真的需要代理,先检查一下代理服务器是否畅通。比如现在有一个ip地址为218.14.227.197,端口为3128的代理服务,我们可以运行telnet 218.14.227.197 3128来检测该地址的该端口是否畅通。如果得到出错信息,需要先获取正确的代理服务信息;如果telnet连接正确,则输入ctrl+],然后q,回车,退出即可。

检查完毕之后,编辑~/.m2/settings.xml文件(如果没有该文件,则复制$m2_home/conf/settings.xml)。添加代理配置如下:

&lt;settings&gt;

… 

&lt;proxies&gt;

&lt;proxy&gt;

&lt;id&gt;myproxy&lt;/id&gt;

&lt;active&gt;true&lt;/active&gt;

&lt;protocol&gt;http&lt;/protocol&gt;

&lt;host&gt;218.14.227.197&lt;/host&gt;

&lt;port&gt;3128&lt;/port&gt;

&lt;!--

&lt;username&gt;***&lt;/username&gt;

&lt;password&gt;***&lt;/password&gt;

&lt;nonproxyhosts&gt;repository.mycom.com|*.google.com&lt;/nonproxyhosts&gt;

--&gt;

&lt;/proxy&gt;

&lt;/proxies&gt;

&lt;/settings&gt;这段配置十分简单,proxies下可以有多个proxy元素,如果声明了多个proxy元素,则默认情况下第一个被激活的proxy会生效。这里声明了一个id为myproxy的代理,active的值为true表示激活该代理,protocol表示使用的代理协议,这里是http。当然,最重要的是指定正确的主机名(host元素)和端口(port元素)。上述xml配置中注释掉了username、password、nonproxyhost几个元素。当代理服务需要认证时,就需要配置username和password。nonproxyhost元素用来指定哪些主机名不需要代理,可以使用“|”符号来分隔多个主机名。此外,该配置也支持通配符,如*.google.com表示所有以google.com结尾的域名访问都不要通过代理。