这篇博文只讲MirrorOf

本文详细介绍了Maven的mirrorOf配置及其作用,解释了远程仓库、镜像仓库的概念,以及依赖下载的过程。mirrorOf作为拦截器,根据设定匹配仓库ID并决定从哪个URL下载jar包。当配置为'*'时,所有仓库都会被镜像,可能导致跳过未匹配的仓库。同时,文章还涉及了仓库账号密码配置、私服设置以及镜像与仓库的激活状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mirrorOf,看单词含义,谁的镜像的意思,所以<mirrorOf>a,b,c</mirrorOf> 自然就是“a,b,c的镜像”的意思。

1. mirrorOf里放的是什么?是repoId; repoId是什么?是远程仓库ID
  • 说到mirrorOf,要先从settings里的repository标签说起,每个repository是一个远程仓库,里面有id标签, url标签等,url标签,是仓库的地址,而这个id标签,对应的其实就是mirrorOf的值。

  • mirrorOf可以理解为一个拦截器,它的值表达了一个/多个仓库ID,比如*号是匹配所有的仓库ID,如果是具体的值,就对应具体的ID;如果匹配到了之后,被匹配的repository的url会被替换成mirror中的url。

2. 下载一个依赖,过程是怎样的(忽略本地仓库查找)
  • 在maven的父pom文件当中,配置了一个默认的远程仓库,即中央仓库,ID为:central,我们还可以在setting中配置多个远程仓库,例如a仓库,b仓库,c仓库(ID为: a,b,c) ,当下载一个依赖的时候,会先从已激活(activeProfiles)的a,b,c仓库中查找jar包,如果找不到再从中央仓库找。

  • 如果配置了mirror,以上的过程会变为:

    1. 开始逐个在远程仓库中查找jar,进入一个远程仓库查找前,先拿仓库ID去镜像配置中匹配mirrorOf。
    2. 如果匹配到了,说明该仓库已经被镜像了,就按照镜像的url去查找jar,如果没匹配到,就去原仓库查找。
    3. 如果没找到jar,去settings中配置的下一个仓库寻找(找到了自然就结束了,开始下载)。
    4. 重复 1 - 3 流程,直到所有仓库都被查找完毕。

如果一个仓库有多个mirrorOf都能够匹配到它,只按最先匹配到的镜像去查,后面的镜像对它不会生效,因为查完就换下一个仓库了。

3. 一些问题
  • 为什么配置<mirrorOf>*</mirrorOf>后,即使某些仓库有jar,也会找不到?
    :因为*号把所有的仓库ID都镜像到了,等查完镜像仓库,已经没有别的仓库了。

  • 为什么在setting中配置了仓库,却不能去该仓库下载jar包?
    :查看你的profile是否被激活了,激活方法,在settings里配置:

    <activeProfiles>
    	<!--需要这样去激活配置-->
    	<activeProfile>your_profile_id</activeProfile>
    </activeProfiles>
    
  • 好多文章里,把阿里镜像的mirrorOf配置成*,有没有问题:
    :没有问题,可以配置成*也可以配置成central,无论配置成什么,都会镜像掉默认的central仓库,也就是说如果阿里的仓库没找到,也不会去maven默认仓库去查找了,但是阿里的东西很全,不会出现这种问题,如果你希望阿里的仓库找不到jar包的话,就去默认仓库去找,你应该去把alimaven配置成一个远程仓库,而不是镜像。

  • 仓库私服需要账号密码,在哪里配置?
    :无论是仓库,还是镜像,连接nexus的账号密码都配置在server标签下:

     <servers>
         <server>
           <!-- id对应的是仓库ID或者是镜像ID -->
           <id>repository_id_OR_mirror_id</id>
           <username>nexus_username</username>
           <password>nexus_password</password>
         </server>
     </servers>
    
  • 我自己搭建了个私服,如果我在settings文件中同时也配置了阿里巴巴私服的镜像,我还需要在私服中配置阿里巴巴私服的代理吗?
    :需要,下载的jar包会保存在私服当中,这样你的同事再次下载时,可以直接从私服下载,就不用再从阿里巴巴的私服去下了,这样减小了你们的外网带宽,同时内网网速肯定也远高于外网,断网也有保障。

  • mirrorOf有很多种表达式,为什么我在这篇文章里没有看到讲解?
    :自己去查。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值