库在项目内部声明,如果你有自定义的库,在项目中配置这些库就能容易的获取正确的设置。但是,你可能想使用某个特定库的其它镜像而不去改变项目文件。
一些原因需要使用镜像库:
- 在internet上有一个地理位置更近更快的同步镜像
- 你想使用自己的内部库来替换某个库,这样你可以有更多的控制权
- 你想运行一个库管理器来提供镜像的本地缓存,并且使用本地url来替换
配置一个给定库的镜像,你需要修改你的配置文件($ {user.home} / .m2/settings.xml),给予新库自己的id和url,并且配置mirrorOf节指向你想镜像的库的id。例如Maven Central US库是central。
你不能将单个库镜像到多个本地库,也就是多个镜像不能有相同的<mirrorOf>值。Maven不会将这些配置组合到一起,它会简单的使用第一个匹配的镜像。如果需要组合多个库,请使用库管理器(repositories manager)repository manager。
设置描述符文档,请参考 Maven Local Settings Model Website.
使用单个库
你可以迫使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> ... </s
高级镜像规则
- * = everything
- external:* = everything not on the localhost and not file based.
- repo,repo1 = repo or repo1
- *,!repo1 = everything except repo1
<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> ... </setti
参考:
http://maven.apache.org/guides/mini/guide-mirror-settings.html