1. Maven镜像(mirror)的概念、作用
mirror相当于一个拦截器,它会拦截maven对remote repository的相关请求,把请求里的remote repository地址,重定向到mirror里配置的地址。
如果仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像。换句话说,任何一个可以从仓库Y获得的构件,都能够从它的镜像中获取。
Some reasons to use a mirror are:
There is a synchronized mirror on the internet that is geographically closer and faster
You want to replace a particular repository with your own internal repository which you have greater control over
You want to run a repository manager to provide a local cache to a mirror and need to use its URL instead.
例如, 有一个项目,需要在公司和住所都编码,并在项目pom.xml配置了A Maven库。在公司,是电信网络,访问A库很快,所以maven管理依赖和插件都从A库下载;在住所,是网通网络,访问A库很慢,但是访问B库很快。这时,在住所的setting.xml里,只要配置一下<mirrors><mirror>....</mirror></mirrors>,让B库成为A库的mirror,即可不用更改项目pom.xml里对于A库的相关配置。
如果该镜像仓库需要认证,则配置setting.xml中的<server></server>即可。
2. 镜像配置
<mirrorOf></mirrorOf>标签里面放置的是要被镜像的Repository ID。
为了满足一些复杂的需求,Maven还支持更高级的镜像配置:
<mirrorOf>*</mirrorOf> 匹配所有远程仓库。
<mirrorOf>repo1,repo2</mirrorOf> 匹配仓库repo1和repo2,使用逗号分隔多个远程仓库。
<mirrorOf>external:*,!repo1</miiroOf> 匹配所有远程仓库,repo1除外,使用感叹号将仓库从匹配中排除。
具体参见:http://maven.apache.org/guides/mini/guide-mirror-settings.html