maven的多仓库配置理解
作者:互联网
2026-03-25
最近在工作中,拉取一个jar包,不确定最初在maven的setting.xml配置的镜像配置能否拉取到,根据AI搜索资料得到一些启发。
场景:
我在我的maven setting.xml配置了阿里云的镜像,这是我们国内开发大多数的必要配置,原因是通过阿里云的拉取,可以加快拉取速度:
<mirror>
<id>nexus-aliyunid>
<mirrorOf>centralmirrorOf>
<name>Nexus aliyunname>
<url>url>
mirror>
在我项目的pom.xml需要拉取一些jar,发现拉取过程中提示拉取不到jar包,于是,我根据搜索到的资料再pom.xml加了仓库配置:
<repositories>
<repository>
<id>central-maid>
<url>url>
<releases><enabled>trueenabled>releases>
<snapshots><enabled>falseenabled>snapshots>
repository>
<repository>
<id>eclipse-releasesid>
<url>url>
repository>
repositories>
然后maven的setting.xml配置改成:
<mirror>
<id>nexus-aliyunid>
<mirrorOf>central,!central-mamirrorOf>
<name>Nexus aliyunname>
<url>url>
mirror>
这样一修改,理解上有所改变,接下来,对新配置点理解进行分析
<mirror>
<id>nexus-aliyunid>
<mirrorOf>central,!central-mamirrorOf>
<name>Nexus aliyunname>
<url>url>
mirror>
- mirror 定义了一个镜像(mirror),Maven 会把对某些仓库的请求重定向到你指定的镜像地址,从而加速下载(尤其是国内访问官方中央仓库很慢的情况下)。
:这个镜像的唯一标识符,建议唯一,通常和仓库的 id 相关联。nexus-aliyun :真正的镜像地址,所有被镜像的请求都会重定向到这里。这是阿里云提供的 Maven 中央仓库公共镜像,速度很快。> :这是最关键的部分,表示这个镜像代理哪些仓库。拆解一下:central:指的是 Maven 默认的中央仓库,其 id 在 super pom 中定义为 "central",地址是repo.maven.apache.org/maven2。central,!central-ma !central-ma:这里的 ! 表示排除(取反)。所以整体意思是:镜像所有 id 为 "central" 的仓库请求,把它们重定向到阿里云镜像。但排除 id 为 "central-ma" 的仓库,这个仓库的请求不会走阿里云镜像,而是走它自己原本配置的地址。
引申:
我们要明白的是,maven所有的项目都隐式继承Super POM,这是maven内置的默认配置, 在Super POM,中默认定义了一个仓库:
<repository>
<id>centralid>
<name>Central Repositoryname>
<url>url>
repository>
这是Maven Central Repository(Maven 中央仓库),全球最大的公共开源 jar 包仓库。 所以这里的central就关联上上面setting.xml mirrof的central。
当你的 pom.xml 中只声明 而没有额外配置 时,Maven 会:
- 先检查本地仓库(~/.m2/repository)。
- 如果本地没有,就去默认的 "central" 仓库下载。
具体在实际运用中,pom.xml的repositories根据使用者自由配置,可以是公司内网仓库,可以是其他仓库,我在这里是以maven的 repo1.maven.org/maven2 来配置repository举例。
相关推荐
专题
+ 收藏
+ 收藏
+ 收藏
+ 收藏
+ 收藏
+ 收藏
最新数据
相关文章
【从0到1构建一个ClaudeAgent】并发-后台任务
MyBatis、MyBatis-Plus、JPA、MyBatisGX 写法比较:同一个需求,四种解法
java2AI系列:SpringAI 通过 Function Calling 接入外部系统
Java 通用树形结构构建与解析工具类解析
深度剖析:Java 并发三大量难题 —— 死锁、活锁、饥饿全解
别再重复造轮子了!SpringBoot对接第三方系统模板,拿来即用
Spring AI 核心原理解析:基于 1.1.4 版本拆解底层架构
华为 IODT 设备接入
自定义跨字段校验必填注解
别再System.out了!这份SpringBoot日志优雅指南,让你告别日志混乱
AI精选
