如何解决Maven依赖源问题

本文介绍了在Maven环境下配置多仓库镜像的方法,包括指定settings.xml文件来切换不同的仓库配置,以及通过settings.xml和pom.xml组合配置主从多仓库镜像。这两种方式能够帮助开发者解决依赖问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近利用Maven框架搭建了一个Springboot应用,应用依赖于公司内部仓库镜像,但是公司的镜像不全,导致无法实现某些功能,比如实现Spring boot优雅的停止(依赖spring-boot-starter-actuator.jar,后面博客会详解)。本篇博客提供了两种方案实现上述问题。

1. Maven指定settings.xml

由于其他项目使用的仍是公司镜像,因而不能直接去修改settings.xml。我们只需要新建一个settings2.xml,并在使用的时候指定settings2.xml即可。同时还需要添加一下新的配置的仓库(/Users/guweiyu/.m2/repository2),避免覆盖原仓库。

<localRepository>/Users/guweiyu/.m2/repository2</localRepository>

1.1 IDEA指定settings.xml

在编辑器中直接可视化修改
这里写图片描述

选择Maven->修改路径“User setting files”和“Local repository”
这里写图片描述

1.2 Maven命令行指定settings.xml

利用maven命令打包时直接指定settings.xml

mvn clean -U install  --settings /Users/guweiyu/.m2/settings2.xml -Dmaven.test.skip=true

2. Maven配置多仓库镜像

上述方案虽然很好的解决maven指定settings.xml和实现本地仓库迁移问题。但是无法解决多仓库镜像问题:应用存在大部分jar包依赖于公司内部仓库镜像,少数jar包依赖于外部镜像仓库。下面详解maven如何配置多仓库镜像问题。

要求公司仓库镜像为主,阿里云镜像仓库为辅。

2.1 在settings.xml中显示配置主从多仓库镜像

两个仓库镜像在settings.xml中配置如下:

<mirror>
    <id>96nexus</id>
    <mirrorOf>*</mirrorOf>
    <name>96nexus</name>
     <url>http://172.18.64.96:8080/nexus/content/groups/public/</url>
</mirror>

<mirror>      
    <id>nexus-aliyun</id>  
    <mirrorOf>central</mirrorOf>   
    <name>nexus-aliyun</name>  
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>         
</mirror> 

以上配置,当maven发现所需的jar包在公司内部镜像中没有时,会自动到阿里云镜像中下载。

但是上述配置mirrorOf的配置语义让人很难理解,语义中应该中央仓库为主,其他为辅,但上述实际配置中反而以*为主。

2.2 在pom.xml中配置个性化仓库镜像

将公司的仓库镜像作为中央仓库配置在settings.xml中,而阿里云仓库镜像作为远程仓库直接配置在maven工程的pom.xml中。具体如下:

  • 将settings.xml中公司内部镜像修改为:
<mirror>
    <id>96nexus</id>
    <mirrorOf>central</mirrorOf>
    <name>96nexus</name>
     <url>http://172.18.64.96:8080/nexus/content/groups/public/</url>
</mirror>
  • 在pom.xml中添加阿里云镜像仓库
<repository>
    <id>nexus-aliyun</id>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</repository>

在上述配置中中央仓库镜像(主要)配置在settings.xml中,其他个性化或者特殊镜像(次要,可能项目有关)配置在工程的pom.xml中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值