<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)。添加代理配置如下:
<settings>
…
<proxies>
<proxy>
<id>myproxy</id>
<active>true</active>
<protocol>http</protocol>
<host>218.14.227.197</host>
<port>3128</port>
<!--
<username>***</username>
<password>***</password>
<nonproxyhosts>repository.mycom.com|*.google.com</nonproxyhosts>
-->
</proxy>
</proxies>
…
</settings>這段配置十分簡單,proxies下可以有多個proxy元素,如果聲明了多個proxy元素,則預設情況下第一個被激活的proxy會生效。這裡聲明了一個id為myproxy的代理,active的值為true表示激活該代理,protocol表示使用的代理協定,這裡是http。當然,最重要的是指定正确的主機名(host元素)和端口(port元素)。上述xml配置中注釋掉了username、password、nonproxyhost幾個元素。當代理服務需要認證時,就需要配置username和password。nonproxyhost元素用來指定哪些主機名不需要代理,可以使用“|”符号來分隔多個主機名。此外,該配置也支援通配符,如*.google.com表示所有以google.com結尾的域名通路都不要通過代理。