maven的多仓库配置的实现步骤

 更新时间:2026年01月11日 10:23:04   作者:优雅的38度  
本文主要介绍了如何配置Maven的settings.xml文件中的镜像和仓库设置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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

场景:

我在我的maven setting.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加了仓库配置:

<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配置改成:

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

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

	<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,中默认定义了一个仓库:

<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举例。

到此这篇关于maven的多仓库配置的实现步骤的文章就介绍到这了,更多相关maven 多仓库配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 三道MySQL新手入门面试题,通往自由的道路

    三道MySQL新手入门面试题,通往自由的道路

    这篇文章主要为大家分享了最有价值的3道MySQL面试题,,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • SpringSecurity显示用户账号已被锁定的原因及解决方案

    SpringSecurity显示用户账号已被锁定的原因及解决方案

    SpringSecurity中用户账号被锁定问题源于UserDetails接口方法返回值错误,解决方案是修正isAccountNonLocked()等方法的逻辑,确保返回正确状态,避免误判账户锁定,从而允许合法用户登录,下面给大家介绍SpringSecurity显示用户账号已被锁定的解决方案,感兴趣的朋友一起看看吧
    2025-06-06
  • Java8之lambda表达式基本语法

    Java8之lambda表达式基本语法

    本文通过示例大家给大家介绍了java8之lambda表达式的基本语法,感兴趣的的朋友一起看看吧
    2017-08-08
  • Java枚举抽象方法实例解析

    Java枚举抽象方法实例解析

    这篇文章主要介绍了Java枚举抽象方法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • 《阿里巴巴 Java开发手册》读后感小结

    《阿里巴巴 Java开发手册》读后感小结

    这篇文章主要介绍了《阿里巴巴 Java开发手册》读后感小结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • SpringBoot整合Redis实现token缓存

    SpringBoot整合Redis实现token缓存

    于token通常会被多次使用,我们需要把它保存到缓存中,以减少频繁地访问数据库,本文主要介绍了SpringBoot整合Redis实现token缓存,感兴趣的可以了解一下
    2024-02-02
  • UniApp + SpringBoot 实现微信支付和退款功能

    UniApp + SpringBoot 实现微信支付和退款功能

    这篇文章主要介绍了UniApp + SpringBoot 实现微信支付和退款功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • Java空指针异常NullPointerException的原因与解决方案

    Java空指针异常NullPointerException的原因与解决方案

    在Java开发中,NullPointerException(空指针异常)是最常见的运行时异常之一,通常发生在程序尝试访问或操作一个为null的对象引用时,这种异常不仅会导致程序崩溃,还会增加调试难度,所以本文系统梳理NullPointerException的成因、调试方法和避免策略
    2025-06-06
  • IDEA中WebService生成Java代码并调用外部接口实现代码

    IDEA中WebService生成Java代码并调用外部接口实现代码

    这篇文章主要介绍了IDEA中WebService生成Java代码并调用外部接口实现,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-05-05
  • MyBatis-Plus 插件扩展的实现

    MyBatis-Plus 插件扩展的实现

    MyBatis-Plus通过插件扩展机制增强功能,基于MyBatis Interceptor拦截器,包括分页插件、逻辑删除、SQL性能分析和乐观锁等,开发者可自定义插件以适应特定需求,有效地增强SQL执行过程的控制和优化,同时注意插件使用的性能影响和执行顺序
    2024-09-09

最新评论