Maven 的 settings.xml 配置中 <mirrorOf> 标签的作用你知道多少?

在 Maven 的 settings.xml 文件中,<mirrorOf> 标签是 <mirror> 元素的重要组成部分,主要用于定义镜像仓库所代理的目标仓库。

在 Maven 的 settings.xml 文件中,<mirrorOf> 标签是 <mirror> 元素的重要组成部分,主要用于定义镜像仓库所代理的目标仓库。

<mirrorOf> 标签的核心作用是告诉 Maven 该镜像仓库将替代哪些目标仓库来提供构件(如 JAR 文件、插件等)的下载服务。当 Maven 需要从某个仓库获取资源时,会根据 <mirrorOf> 的配置规则,判断是否使用镜像仓库来代替目标仓库进行下载,从而提高下载速度、解决网络访问问题或优化资源获取路径。

常见取值及含义

通配符 *

表示该镜像仓库将代理所有的仓库。也就是说,无论 Maven 原本要从哪个仓库下载资源,都会优先从这个镜像仓库中查找。

示例:

<mirrors>
   <mirror>
       <id>aliyunmaven</id>
       <mirrorOf>*</mirrorOf>
       <name>阿里云公共仓库</name>
       <url>https://maven.aliyun.com/repository/public</url>
   </mirror>
</mirrors>

在这个例子中,阿里云镜像仓库将代理所有的 Maven 仓库,Maven 在下载依赖和插件时,都会尝试从阿里云镜像仓库获取。

具体仓库 ID

指定该镜像仓库只代理特定 ID 的仓库。只有当 Maven 要从指定 ID 的仓库下载资源时,才会使用这个镜像仓库。

示例:

<mirrors>
   <mirror>
       <id>my-custom-mirror</id>
       <mirrorOf>central</mirrorOf>
       <name>自定义中央仓库镜像</name>
       <url>https://my-mirror.example.com/maven-central</url>
   </mirror>
</mirrors>

这里的 <mirrorOf> 指定为 central,表示该镜像仓库只代理中央仓库。当 Maven 需要从中央仓库下载资源时,会从 https://my-mirror.example.com/maven-central 这个镜像仓库获取。

逗号分隔的多个仓库 ID

表示该镜像仓库将代理多个指定 ID 的仓库。Maven 在从这些指定 ID 的仓库下载资源时,会使用这个镜像仓库。

示例:

<mirrors>
   <mirror>
       <id>multi-mirror</id>
       <mirrorOf>repo1,repo2</mirrorOf>
       <name>多仓库镜像</name>
       <url>https://my-mirror.example.com/multi-repos</url>
   </mirror>
</mirrors>

此配置中,镜像仓库会代理 repo1 和 repo2 这两个仓库,当 Maven 要从这两个仓库下载资源时,会转向 https://my-mirror.example.com/multi-repos 进行下载。

*,!repoId

表示该镜像仓库代理除了指定 ID 的仓库之外的所有仓库。* 代表所有仓库,! 是排除符号。

示例:

<mirrors>
   <mirror>
       <id>exclude-mirror</id>
       <mirrorOf>*,!internal-repo</mirrorOf>
       <name>排除特定仓库的镜像</name>
       <url>https://my-mirror.example.com/other-repos</url>
   </mirror>
</mirrors>

这里的镜像仓库会代理除 internal-repo 之外的所有仓库,Maven 在从除 internal-repo 以外的仓库下载资源时,会使用该镜像仓库。

越是没有本领的就越加自命不凡。——邓拓
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号