最近使用maven过程中,为了加快下载jar包的速度用了一下maven的mirror,总会遇到各种问题。实在是没有办法了,认真找了些资料搞明白了基本用法。在这里做个记录。
mirrors允许配置多个镜像mirror,mirror的作用一般是为了使用一个更快速度的镜像,主要是访问速度的考虑,或者突破屏蔽(部分jar被河蟹)使用可以访问的镜像。
1.在maven中不配置mirror时如果本地仓库中找不到jar包,使用的maven的中央库。
2.在maven中配置一个mirror时,mirror通常会设置成*,还有可能是一个具体的值,还有可能是逗号隔开的几个值..
例如:
<mirrorOf>*</mirrorOf>匹配所有远程仓库
<mirrorOf>external:*</mirrorOf>匹配所有远程仓库,匹配所有不在本机的仓库
<mirrorOf>repo1,repo2</mirrorOf>,匹配仓库repo1和repo2
<mirrorOf>*,!repo1</mirrorOf>:匹配所有远程仓库,除了repo1
之前对external:*不太理解,特意做了个实验,得出结论:
只要配置了此项,所有包都从镜像配置的仓库下载,如果本地仓库中有也去远程下载。
说明maven依赖的解析方式:
解析发布版本:
如果本地有,直接使用本地的,没有就向远程仓库请求。
解析快照版本:
合并本地和远程仓库的元数据文件-groupId/artifactId/version/maven-metadata.xml,这个文件存的版本都是带时间戳的,将最新的一个改名为不带时间戳的格式供本次编译使用