Maven:mirror和repository的关系&区别-restrictions翻译

2023-08-07 08:31:55

 

1.1 结论

1、repository(仓库)存放具体依赖jar包的地方,而mirror(镜像)是一个拦截器,可以拦截某个仓库将原始的仓库地址重定向到镜像指定的地址中去(主要是为了提高下载速度,例如从国内的仓库下载jar肯定要比从国外的仓库下载jar要快);

2、maven 默认的repository(仓库)地址为:

https://repo.maven.apache.org/maven2;

3、mirror可以通过mirrorOf用来控制指定哪个仓库要从镜像来下载,多个仓库之间用逗号隔开(例:central,!spring-milestones,!spring-snapshots),并支持通配符;

(1)指定仓库(例:central):这时候只有指定的仓库会从镜像地址下载;

(2)*:所有仓库中都从镜像下载;

(3)!: 例外,指定!后面的仓库不从该镜像下载(该通配符通常会和*通配符一起使用,例如:*,!spring-milestones,!spring-snapshots);

4、如果repository指定了mirror则repository中配置的url则失败;

5、使用mirror的原因

(1)互联网上有一个同步仓库,在地理位置上更近,下载更快;

(2)想用自己的公司的仓库而不是远程仓库,从而可以更好地控制它;

1.2 场景描述

1.2.1 场景1:在setting.xml和项目的pom.xml文件均未配置mirror和repository

在未配置mirror和repository的情况下, Maven会从默认的仓库去下载依赖jar的包。

默认的repository配置可以在maven安装根目录下的

/lib/maven-model-builder-3.6.1.jar/org/apache/maven/model/pom-*.xml文件内查看,其中repository的配置如下图所示:

因此,从图上可以看出在未配置mirror和repository的情况下会从

https://repo.maven.apache.org/maven2仓库下载项目依赖的Jar包。

1.2.2 场景2:在setting.xml或项目的pom.xml文件配置了repository

如上图所示,mvn install的时候会先从

https://repo.spring.io/milestone仓库下载依赖的jar包,如果未找到则再从maven的默认仓库

https://repo.maven.apache.org/maven2去下载。

1.2.3 场景3:在setting.xml文件配置了mirror但未配置repository(包括在pom.xml也未配置)

从上图可以看出,配置了镜像地址:

http://maven.aliyun.com/nexus/content/groups/public/,此时从central仓库下载依赖会自动从阿里云仓库去下载,而不再从

https://repo.maven.apache.org/maven2下载。

此处要特别注意mirrorOf标签,该标签主要是用来指定repository重定向到哪个镜像去下载。mirrorOf的值为repository配置的Id,如下图所示:


以上就是关于《Maven:mirror和repository的关系&区别-restrictions翻译》的全部内容,本文网址:https://www.7ca.cn/baike/59508.shtml,如对您有帮助可以分享给好友,谢谢。
标签:
声明

排行榜