maven仓库如何配置

206 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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

定义仓库地址

  • 相信很多情况下你多会有自己的私服,所有仓库地址肯定指向私服服务器,这个时候我们只需要在 mavensettings.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 都只会在第一个镜像服务查找,不会轮训到其他镜像查找。