Maven:mirror和repository 区别
http://m.oschina.net/blog/100634
internal repository是指在局域網(wǎng)內部搭建的repository,它跟central repository, jboss repository等的區(qū)別僅僅在于其URL是一個內部網(wǎng)址?
mirror則相當于一個代理,它會攔截去指定的遠程repository下載構件的請求,然后從自己這里找出構件回送給客戶端。配置mirror的目的一般是出于網(wǎng)速考慮。?
可以看出,internal repository和mirror是兩碼事。前者本身是一個repository,可以和其它repository一起提供服務,比如它可以用來提供公司內部的maven構件;而后者本身并不是repository,它只是遠程repository的網(wǎng)絡加速器。?
不過,很多internal repository搭建工具往往也提供mirror服務,比如Nexus就可以讓同一個URL,既用作internal repository,又使它成為所有repository的mirror。
如果倉庫X可以提供倉庫Y存儲的所有內容,那么就可以認為X是Y的一個鏡像。換句話說,任何一個可以從倉庫Y獲得的構件,都胡夠從它的鏡像中獲取。舉個例子,http://maven.net.cn/content/groups/public/ 是中央倉庫http://repo1.maven.org/maven2/ 在中國的鏡像,由于地理位置的因素,該鏡像往往能夠提供比中央倉庫更快的務。因此,可以配置Maven使用該鏡像來替代中央倉庫。編輯settings.xml,代碼如下:
<settings>...<mirrors><mirror><id>maven.net.cn</id><name>one of the central mirrors in china</name><url>http://maven.net.cn/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror></mirrors>... </settings> 該例中,<mirrorOf>的值為central,表示該配置為中央倉庫的鏡像,任何對于中央倉庫的請求都會轉至該鏡像,用戶也可以使用同樣的方法配置其他倉庫的鏡像。另外三個元素id,name,url與一般倉庫配置無異,表示該鏡像倉庫的唯一標識符、名稱以及地址。類似地,如果該鏡像需認證,也可以基于該id配置倉庫認證。?關于鏡像的一個更為常見的用法是結合私服。由于私服可以代理任何外部的公共倉庫(包括中央倉庫),因此,對于組織內部的Maven用戶來說,使用一個私服地址就等于使用了所有需要的外部倉庫,這可以將配置集中到私服,從而簡化Maven本身的配置。在這種情況下,任何需要的構件都可以從私服獲得,私服就是所有倉庫的鏡像。這時,可以配置這樣的一個鏡像,如例:??
<settings>...<mirrors><mirror><id>internal-repository</id><name>Internal Repository Manager</name><url>http://192.168.1.100/maven2</url><mirrorOf>*</mirrorOf></mirror></mirrors>... </settings> 該例中<mirrorOf>的值為星號,表示該配置是所有Maven倉庫的鏡像,任何對于遠程倉庫的請求都會被轉至http://192.168.1.100/maven2/。如果該鏡像倉庫需要認證,則配置一個Id為internal-repository的<server>即可。為了滿足一些復雜的需求,Maven還支持更高級的鏡像配置:?
1.<mirrorOf>*</mirrorOf>?
匹配所有遠程倉庫。?
2.<mirrorOf>external:*</mirrorOf>?
匹配所有遠程倉庫,使用localhost的除外,使用file://協(xié)議的除外。也就是說,匹配所有不在本機上的遠程倉庫。?
3.<mirrorOf>repo1,repo2</mirrorOf>?
匹配倉庫repo1和repo2,使用逗號分隔多個遠程倉庫。?
4.<mirrorOf>*,!repo1</miiroOf>?
匹配所有遠程倉庫,repo1除外,使用感嘆號將倉庫從匹配中排除。?
需要注意的是,由于鏡像倉庫完全屏蔽了被鏡像倉庫,當鏡像倉庫不穩(wěn)定或者停止服務的時候,Maven仍將無法訪問被鏡像倉庫,因而將無法下載構件。
在pom.xml可能會用到一些第三方遠程倉庫的庫,不在central庫中,如果settings.xml中設置
<?xml version="1.0"?>
? 2 <settings>
? 3 ? ? <mirrors>
? 4 ? ? ? ? <mirror>
? 5 ? ? ? ? ? ? <id>nexus-osc</id>
? 6 ? ? ? ? ? ? <name>Nexusosc</name>
? 7 ? ? ? ? ? ? <url>http://nexus.xxx/public/</url>
? 8 ? ? ? ? ? ? <mirrorOf>*</mirrorOf>
? 9 ? ? ? ? </mirror>
?10 ? ? </mirrors>
?11 </settings>
說明不管用哪個遠程倉庫,都要用這里設置的鏡像倉庫,但是問題在于如果第三方遠程倉庫的庫不在這個鏡像中,就無法下載了
所以mirrorOf的值要設為central
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Maven:mirror和repository 区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: maven 和eclipse插件
- 下一篇: 非法文件名