mirrorOf 是 central 还是 * 的问题
在配置阿里对官方中央仓库的镜像服务器时,我们使用到了 <mirror>
元素。
<mirror><id>aliyunmaven</id><mirrorOf>central</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url>
</mirror>
故名思意,<mirror>
用于配置网络仓库的『镜像』。当你准备去默认的中央仓库下载包和插件时,Maven 会『拦截』你的下载请求,转而去你所配置的『镜像网址』下载,从而也能实现从指定的国内的网址下载。
而 <mirror>
元素的子元素 <mirrorOf>
的值常见两种:central 和通配符 * 。
central 和 * 的区别在于:
-
如果是 central,那么 maven 只会将你的从『中央仓库』下载请求(无论是 jar 包,还是插件包),转向你所配置的镜像地址。
-
如果是 * ,那么 maven 会将你的『所有』下载请求转向你所配置的镜像地址。
如果你要下载一个不在中央仓库的包(或插件),例如 tomcat8-maven-plugin ,
-
如果你配置的值是 central,那么 maven 会去你所配置的『别的』仓库下载,因为中央仓库没有这个包;
-
如果你配置的值是 *,那么无论这个包在不在中央仓库,maven 只会去中央仓库下载。有,则有;没有,则没有。