502 Maven-仓库

Maven使用仓库来保存构建后的artifact以及artifact依赖的其它内容。例如:jar包,插件,POM文件等等。

Maven的仓库分为以下三种。

  • 本地仓库
  • 远程仓库
  • 中央仓库

本地仓库

本地仓库对应本地电脑的一个目录,工程所有依赖的jar包都会被下载到本地仓库。

本地仓库的默认路径是%USER_HOME%/.m2/respository。也可以在settings.xml文件中通过标签指定。

<localRepository>~/.m2</localRepository>

远程仓库

远程仓库指的是需要通过网络远程下载jar包的仓库。

可以通过在settings.xml或者pom.xml文件中通过标签指定。

<repositories>
  <repository>
    <id>remote-respository</id>
    <name>remote respository name</name>
    <url>http://remote.respository.com</url>
  </repository>
</repositories>

如果远程仓库需要登录校验,还需要在标签中配置仓库的登录名和密码,通过关联。

<server>
  <id>remote-respository</id>
  <username>admin</username>
  <password>admin123</password>
</server>

对于远程仓库,配置在settings.xml文件中的仓库,我们可以称之为私服。配置在pom.xml中的仓库,称之为远程仓库

中央仓库

中央仓库时特殊的远程仓库,不需要我们显示定义,它保存在Super POM文件中,连接的是Maven官方提供的仓库。

<repositories>
  <repository>
    <id>central</id>
    <name>Maven Repository Switchboard</name>
    <url>http://repo1.maven.org/maven2</url>
    <layout>default</layout>
    <snapshots>
      <enabled>false</enabled>
    </snapshots>
  </repository>
</repositories>

仓库镜像

由于一些不可描述的原因,我们连接的仓库下载速度可能很慢,例如连接Maven中央仓库。

这是可以通过标签,将制定的仓库镜像到其它更快的仓库上。

例如下面的配置,将中央仓库central镜像到阿里云仓库。

</mirrors>
  <mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>        
  </mirror>
</mirrors>

仓库下载优先级

本地仓库 > 私服 > 远程仓库/镜像 > 中央仓库

参考资料

[1] Introduction to Repositories https://maven.apache.org/guides/introduction/introduction-to-repositories.html [2] Maven仓库优先级以及失败机制分析https://blog.csdn.net/coder_zzy/article/details/82751081

上篇502 Maven-外部依赖
下篇502 Maven-构建生命周期