Maven实战-第十一篇(Maven中的镜像)

Maven实战-第十一篇(Maven中的镜像)

上两篇中我们介绍了,有关Maven中仓库的内容,并且也简单介绍了mirror的内容。今天我们详细介绍一下mirror标签的内容,也就是Maven中的镜像。


镜像很简单,可以理解为镜子。简单来说也就是仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像。并且我们知道Maven仓库的中央仓库地址是在国外的,如果直接访问的话,可能因为网络的原因导致速度较慢涉及下载组件失败。如果我们在国内搭建一个国内的镜像地址,然后在国内访问时直接使用这个地址,那么这个镜像仓库的地址就会提供比中央仓库更快的服务,并且内容完全一致。这就是Maven中镜像的目的。


下面配置就是之前介绍过的Maven中配置的阿里云的镜像地址。同样的也是需要在Maven中的settings.xml文件中进行配置。

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

之前我们介绍过Maven中的中央仓库地址的id为central。上面配置中的<mirrorOf>标签的值为central,表示上面配置的是中央仓库的镜像,所有请求中央仓库的请求都会先请求这个镜像地址。其它三个标签id、name、url和仓库的配置一样没有任何区别。在实际上项目开发中我们通常会将标签设置为*,这表示所有对仓库的请求都会请求这个镜像地址。然后在将这个镜像地址配置成地的私服地址,这样就完成了私服和镜像的配置。

<mirrors>
    <mirror>
        <id>localhost</id>
        <name>Internal Repository Manager</name>
        <url>http://127.0.0.1/maven2/</url>
        <mirrorOf>*</mirrorOf>
    </mirror>
</mirrors>

除了配置*以外Maven为了满足一些复杂的需求,还支持更高级的镜像配置。具体配置如下:

  • *匹配所有仓库。
  • external:* 除了本地缓存之后的所有仓库,也就是不在本机的远程仓库。
  • repo1,repo2。匹配仓库repo1和repo2,中间用逗号分隔多个仓库。
  • *,!repo1。匹配所有远程仓库,但除了repo1仓库。在Maven中可以使用感叹号将仓库从匹配列表中排除。

给TA打赏
共{{data.count}}人
人已打赏
Maven

Maven实战-第十篇(Maven的仓库配置)

2023-7-28 6:38:43

Maven

Maven实战-第十二篇(Maven中的版本)

2023-7-30 19:26:32