maven仓库中心mirrors配置详解

2023-12-15 18:10:49

一、repository

repository就是个仓库.

maven里有两种仓库,本地仓库和远程仓库。

远程仓库相当于公共的仓库,大家都能看到。

本地仓库是你本地的缓存副本,只有你看的到,主要起缓存作用。

当你向仓库请求插件或依赖的时候,会先检查本地仓库里是否有。

如果有则直接返回,否则会向远程仓库请求,并被缓存到本地仓库。

远程仓库可以在工程的pom.xml文件里指定。

二、mirror

mirror就是镜像,主要提供一个方便地切换远程仓库地址的途径。

当maven需要到的依赖jar包不在本地仓库时, 就需要到远程仓库下载 .mirror可以拦截对远程仓库的请求 , 改变对目标仓库的下载地址.

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

此处指定多个mirrors镜像,镜像只会执行第一个位置mirror。

  • 属性
    1、id: 镜像的唯一标识;
    2、name: 名称描述;
    3、url: 地址;
    4、mirrorOf: 指定镜像规则,什么情况下从镜像仓库拉取。其中, *: 匹配所有,所有内容都从镜像拉取;

external:*: 除了本地缓存的所有从镜像仓库拉取;

repo,repo1: repo或者repo1,这里的repo指的仓库ID;

*,!repo1: 除了repo1的所有仓库;

三、多仓库配置

2、在pom.xml的repositories标签中可以配置

maven如果发现本地仓库没有的依赖都会尝试从远程仓库拉取,按顺序并发请求多个远程仓库

<project>
    <repositories>

    </repositories>
</project>
1、在settings.xml的节点下配置多个profile

在profiles节点下配置多个profile,而且配置之后要激活。

<profiles>
    <profile>
      <id>boundlessgeo</id> 
      <repositories>
        <repository>
          <id>boundlessgeo</id> 
          <url>https://repo.boundlessgeo.com/main/</url> 
          <releases>
            <enabled>true</enabled>
          </releases> 
          <snapshots>
            <enabled>true</enabled> 
            <updatePolicy>always</updatePolicy>
          </snapshots>
        </repository>
      </repositories>
    </profile>
    <profile>
      <id>aliyun</id> 
      <repositories>
        <repository>
          <id>aliyun</id> 
          <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 
          <releases>
            <enabled>true</enabled>
          </releases> 
          <snapshots>
            <enabled>true</enabled> 
            <updatePolicy>always</updatePolicy>
          </snapshots>
        </repository>
      </repositories>
    </profile> 
    <profile>
      <id>maven-central</id> 
      <repositories>
        <repository>
          <id>maven-central</id> 
          <url>http://central.maven.org/maven2/</url> 
          <releases>
            <enabled>true</enabled>
          </releases> 
          <snapshots>
            <enabled>true</enabled> 
            <updatePolicy>always</updatePolicy>
          </snapshots>
        </repository>
      </repositories>
    </profile>
<profiles>

通过配置activeProfiles子节点激活:

<activeProfiles>
    <activeProfile>boundlessgeo</activeProfile>
    <activeProfile>aliyun</activeProfile>
    <activeProfile>maven-central</activeProfile>
</activeProfiles>
  • 注意(重要)
    当你的maven中的setting.xml配置文件里面关于mirror部分的<mirrorOf>配置为*的时候,pom里配的<repository>是不生效的。

总结
1、当你的项目拉取jar包时,大量的jar包来自于国内大型镜像,那就在mirror部分配上一个这个仓库地址,<mirrorOf>不要用*。如果还需要公司内部私服拉去jar,那就配置到<profiles>并且在<activeProfiles>里面激活配置,这里可以配置多个。
3、最后,如果只是某个项目需要拉去特定镜像仓库中的某些jar包,那就将其配置到项目根pom的 <repository>里。


链接:https://www.jianshu.com/p/a568133e29ea

文章来源:https://blog.csdn.net/vip_member888/article/details/134891893
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。