maven mirrorOf的作用

在工作中遇到了一个问题导致依赖下载不了,最后发现是mirror的问题,决定好好去看一下mirror的配置,以及mirrorOf的作用,以前都是直接复制过来使用,看了之后才明白什么意思。

过程

如果你设置了镜像,镜像会匹配你所设置的repository,当然之间有一些匹配规则(下面详细说明),如匹配上就不去匹配上的repository配置的地址下载该依赖了,而去镜像设置的地址下载,其实mirror就是一个拦截器,拦截匹配上的repository,拦截之后不去repository地址下,去mirror配置的地址下,如果有点懵,请看下面我举的例子。

例子

mirrorOf匹配规则

基本规则:mirrorOf和repositorie的id一致则成功匹配

符号 说明
* 匹配所有repositorie
external:* 匹配除了本地和基于文件的所有repositorie
, 表示和的意思,如repo,repo1表示匹配repo和repo1
! 表示除了什么,如*,!repo1表示除了repo1的所有

以下是我的配置文件,并且pom.xml文件中没有设置任何repository仓库。

配置文件

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
  <localRepository>D:\MAJOR\apache-maven-3.6.3\m2\repository</localRepository>
  <pluginGroups>
  </pluginGroups>
  <proxies>
  </proxies>
  <servers>
  </servers>
  <mirrors>
	<mirror>
		<id>aliyunmaven</id>
		<name>aliyun maven</name>
		<url>https://maven.aliyun.com/repository/public</url>
		<mirrorOf>*</mirrorOf>
    </mirror>

  </mirrors>

<profiles>
   <profile>
     <id>myprofile</id>
     <repositories>
       <repository>
         <id>my-repo2</id>
         <name>repo2</name>
         <url>http://jarsm2.dyndns.dk</url>
       </repository>
     </repositories>
   </profile>
 </profiles>
 
 <activeProfiles>
   <activeProfile>myprofile</activeProfile>
 </activeProfiles>

</settings>

我设置了一个名为my-repo2的仓库,所以说当maven下载依赖时本地找不到就会去my-repo2仓库下载,但是我这里设置了一个mirror,并且mirrorOf设置了*,匹配了所以仓库,所以这儿不会去my-repo2仓库下载,而会去mirror配置的地址下载。

注意

当你使用高级语法并配置多个镜像时,声明顺序很重要。当Maven查找某个仓库的镜像时,它首先检查是否有一个镜像的与仓库标识符完全匹配。如果没有直接匹配的镜像,Maven会选择第一个符合上述规则的镜像声明(如果有)。因此,通过改变settings.xml中定义的顺序,你可以影响匹配顺序。

相关推荐
Java成神之路-5 小时前
基于 Spring AI+MCP 协议实现大模型调用本地自定义工具
java·spring·springaialibaba
会编程的吕洞宾5 小时前
Spring Boot多环境配置实战 配置文件加载顺序与切换不再翻车
java·后端
额鹅恶饿呃5 小时前
随着CentOS官方停服的时间越来越久,大量仍在使用CentOS7的企业和运维从业者
java·python·算法·c#·ruby
秋名RG5 小时前
Java 异常处理全攻略:从入门到实战(JDK 21 版)
java·开发语言
SQL-First布道者5 小时前
我为什么把 MyBatis 从项目中删了?
java·spring·tomcat·mybatis·mybatis plus·spring jdbc
公爵爱学习6 小时前
无人机多点导航笔记
java·前端·笔记
萧瑟余晖6 小时前
Java深入解析篇五十五之Unsafe 机制详解
java
kakawzw6 小时前
mybatis源码笔记1——JDBC和整体架构
java·mybatis
sunshine22 girl6 小时前
Java学习一 环境配置1 安装JDK,配置环境变量
java·开发语言·学习
秋饼6 小时前
Spring AI Session API 深度实战:从 ChatMemory 平滑迁移到事件溯源的企业级短期记忆
java·ai·技术分享·后端开发