maven的多仓库配置理解

最近在工作中,拉取一个jar包,不确定最初在maven的setting.xml配置的镜像配置能否拉取到,根据AI搜索资料得到一些启发。

场景:

我在我的maven setting.xml配置了阿里云的镜像,这是我们国内开发大多数的必要配置,原因是通过阿里云的拉取,可以加快拉取速度:

xml 复制代码
	<mirror>
  		<id>nexus-aliyun</id>
  		<mirrorOf>central</mirrorOf>
  		<name>Nexus aliyun</name>
  		<url>https://maven.aliyun.com/repository/central</url>
	 </mirror>  

在我项目的pom.xml需要拉取一些jar,发现拉取过程中提示拉取不到jar包,于是,我根据搜索到的资料再pom.xml加了仓库配置:

xml 复制代码
<repositories>
    <repository>
        <id>central-ma</id>
        <url>https://repo1.maven.org/maven2/</url>
        <releases><enabled>true</enabled></releases>
        <snapshots><enabled>false</enabled></snapshots>
    </repository>

    <repository>
        <id>eclipse-releases</id>
        <url>https://repo.eclipse.org/content/repositories/releases/</url>
    </repository>

</repositories>

然后maven的setting.xml配置改成:

xml 复制代码
	<mirror>
  		<id>nexus-aliyun</id>
  		<mirrorOf>central,!central-ma</mirrorOf>
  		<name>Nexus aliyun</name>
  		<url>https://maven.aliyun.com/repository/central</url>
	 </mirror>  

这样一修改,理解上有所改变,接下来,对新配置点理解进行分析

xml 复制代码
	<mirror>
  		<id>nexus-aliyun</id>
  		<mirrorOf>central,!central-ma</mirrorOf>
  		<name>Nexus aliyun</name>
  		<url>https://maven.aliyun.com/repository/central</url>
	 </mirror>  

- mirror 定义了一个镜像(mirror),Maven 会把对某些仓库的请求重定向到你指定的镜像地址,从而加速下载(尤其是国内访问官方中央仓库很慢的情况下)。

  • <id>nexus-aliyun</id>:这个镜像的唯一标识符,建议唯一,通常和仓库的 id 相关联。
  • <url>https://maven.aliyun.com/repository/central</url>:真正的镜像地址,所有被镜像的请求都会重定向到这里。这是阿里云提供的 Maven 中央仓库公共镜像,速度很快。
  • <mirrorOf>central,!central-ma</mirrorOf>:这是最关键的部分,表示这个镜像代理哪些仓库。拆解一下:central:指的是 Maven 默认的中央仓库,其 id 在 super pom 中定义为 "central",地址是repo.maven.apache.org/maven2。
  • !central-ma:这里的 ! 表示排除(取反)。所以整体意思是:镜像所有 id 为 "central" 的仓库请求,把它们重定向到阿里云镜像。但排除 id 为 "central-ma" 的仓库,这个仓库的请求不会走阿里云镜像,而是走它自己原本配置的地址。

引申:

我们要明白的是,maven所有的项目都隐式继承Super POM,这是maven内置的默认配置, 在Super POM,中默认定义了一个仓库:

xml 复制代码
<repository>
  <id>central</id>
  <name>Central Repository</name>
  <url>https://repo.maven.apache.org/maven2</url>
</repository>

这是Maven Central Repository(Maven 中央仓库),全球最大的公共开源 jar 包仓库。 所以这里的central就关联上上面setting.xml mirrof的central。

当你的 pom.xml 中只声明 而没有额外配置 时,Maven 会:

  1. 先检查本地仓库(~/.m2/repository)。
  2. 如果本地没有,就去默认的 "central" 仓库下载。

具体在实际运用中,pom.xml的repositories根据使用者自由配置,可以是公司内网仓库,可以使其他仓库,我在这里是以maven的 repo1.maven.org/maven2 来配置repository举例。

相关推荐
提子拌饭1335 小时前
风息时钟:鸿蒙Flutter 实现的自然风格时钟应用
flutter·华为·架构·开源·harmonyos
一定要AK8 小时前
Spring 入门核心笔记
java·笔记·spring
A__tao8 小时前
Elasticsearch Mapping 一键生成 Java 实体类(支持嵌套 + 自动过滤注释)
java·python·elasticsearch
KevinCyao8 小时前
java视频短信接口怎么调用?SpringBoot集成视频短信及回调处理Demo
java·spring boot·音视频
科技小花8 小时前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
2501_948114248 小时前
2026年大模型API聚合平台技术评测:企业级接入层的治理演进与星链4SAPI架构观察
大数据·人工智能·gpt·架构·claude
迷藏4948 小时前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源
FserSuN8 小时前
LangChain DeepAgent 多 Agent 架构原理学习
架构·langchain
坏孩子的诺亚方舟8 小时前
RTL设计师攻略0_架构与微架构
架构·cpu·面试攻略
智星云算力9 小时前
本地GPU与租用GPU混合部署:混合算力架构搭建指南
人工智能·架构·gpu算力·智星云·gpu租用