配置maven映象
阿新 • • 發佈:2019-01-09
Using Mirrors for Repositories
Repositories是你指定的用於下載某些artifacts的位置,如dependencies和maven-plugins,Repositories可以在專案中宣告,這意味著如果你有自己的訂製Repositories,那麼將能夠很容易的共享你的專案,然而,你也可能想要不修改專案檔案的情況下使用一個特殊倉庫的映象。
使用映象的理由:
- 網際網路上存在同步的映象,並且更近,更快。
- 你想要用你更能控制的你自己的內部repository替換一個特別的repository
- 你想要執行一個倉庫管理器來提供一個映象的本地快取,並且需要使用它的URL替代。
要配置一個給定repository的映象,你需要在你的settings配置檔案(settings.xml)中配置它自己的id和url,並且指定mirrorOf為所要配置Repository的ID,例如主要的美國中心Repository包含的ID預設為central,所以如果要使用歐州中心Repository,你需要配置如下:
<settings> ... <mirrrors> <mirror> <id>UK</id> <name>UK central</name> <url>http://uk.maven.org/maven2</url> <mirrorOf>cenral</mirrorOf> </mirror> </mirrors> ... </settings>
一個給定的Repository只能擁有一個映象,換句話說,你不對映一個Repository到一組使用相同值的映象。雖然maven不限制,但是隻會選擇第一個匹配到的映象。
使用單一Repository
你可以強制Maven使用單一的Repository,並通過它來反射所有的倉庫請求。這要的Repository必須包含所有的需要的artifacts或者能夠代理對其他Repository的請求。此種配置在使用一個公司內部的使用Maven倉庫管理工具代理其他請求的倉庫時是非常有用的。
要實現這樣的配置,需要將mirrorOf值設定為*。如下:
<settings> ... <mirrors> <mirror> <id>internal-repository</id> <name>Maven Repository Manager running on repo.mycompany.com</name> <url>http://repo.mycompany.com/proxy<url> <mirrorOf>*</mirrorOf> </mirror> </mirrors> ... </settings>
Advanced Mirror Specification
一個映象(mirror)可以操作多個Repository,語法如下:
- *表示匹配所有倉庫ID
- external:*表示匹配除了本地和基於檔案的Repository
- 指定多個RepositoryID時可以用逗號分隔,如repo,repo1。
- *,!repo1表示匹配除了repo1外的所有倉庫ID。
如:
<settings>
...
<mirrors>
<mirror>
<id>internal-repository</id>
<name>Maven Repository Manager running on repo.mycompany.com</name>
<url>http://repo.mycompany.com/proxy</url>
<mirrorOf>external:*,!foo</mirrorOf>
</mirror>
<mirror>
<id>foo-repository</id>
<name>Foo</name>
<url>http://repo.mycompany.com/foo</url>
<mirrorOf>foo</mirrorOf>
</mirror>
</mirrors>
...
</settings>