在 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 的仓库。只有当 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 的仓库。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 进行下载。
表示该镜像仓库代理除了指定 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 以外的仓库下载资源时,会使用该镜像仓库。