持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第12天,点击查看活动详情
远程仓库傻傻分不清
- 公司内部大多都回存在
maven私服,个人也会搭建maven私服,有的时候项目需要使用第三方提供的私服,随着时间的推移我们的maven setting.xml配置文件会配置很多私服地址。这不我现在就被这些地址搞乱了,不知道 mirror 和 repository 之间作用与区别了。
超级POM
- 超级POM是所有pom隐式继承一个父类。他存在于
apache-maven-3.6.3\lib\maven-model-builder-3.6.3.jar中。maven-model-builder-3.6.3.jar\org\apache\maven\model\pom-4.0.0.pom具体内容如下:
超级POM作用
- 仔细观察下文件内容就可以知道,他存在的意义就是指定默认中央仓库。我们都知道如无特殊配置默认都回去中央仓库寻找我们需要的jar的。
Repository
定义仓库地址
- 相信很多情况下你多会有自己的私服,所有仓库地址肯定指向私服服务器,这个时候我们只需要在
maven的settings.xml文件中配置即可覆盖默认仓库地址
<repositories>
<repository>
<id>aliyun-repository</id>
<name>aliyun repository</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</repository>
</repositories>
- 可以清楚看到所有的jar包都去aliyun仓库寻找而不是默认的中央仓库寻找了。
多个repository
- 我们能够清楚的发现一次编译会从两个仓库分别请求jar , 这就是因为部分jar 在阿里云没有,maven 自动回去下一个仓库寻找。
Mirror
-
mirror则相当于一个代理,它会拦截去指定的远程repository下载构件的请求,然后从自己这里找出构件回送给客户端。配置mirror的目的一般是出于网速考虑。
-
按照镜像匹配规则当我们访问tom1仓库时,下面三个镜像会匹配到,按照顺序
maven选择第一个进行下载,如果第一个服务可以正常访问那么不管有没有找到jar 都只会在第一个镜像服务查找,不会轮训到其他镜像查找。