记录maven配置 mirrorOf 坑

本文介绍了一种解决Maven项目中依赖包缺失的方法。通过调整settings.xml中的镜像设置,从全匹配(*)改为仅匹配中央仓库(central),成功解决了依赖下载失败的问题。

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

今天从远端download下公司一个maven项目时,pom.xml文件中一直报错,missing某些包,此时maven中settings.xml的主要配置如下
<mirrors>
    <mirror>
        <id>nexus</id>
        <mirrorOf>*</mirrorOf>
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    </mirror>
</mirrors>

项目中pom.xml配置了客户的私服,如下:

<distributionManagement>
    <repository>
        <id>bank_central</id>
        <name>core Release Repository</name>
        <url>http://......:9090/repository/bank_central/</url>
    </repository>
    <snapshotRepository>
        <id>bank_privrepository_snapshots</id>
        <name>core Snapshots Repository</name>
        <url>http://......:9090/repository/bank_privrepository_snapshots/</url>
    </snapshotRepository>
</distributionManagement>

<repositories>
    <repository>
        <id>bank_privrepository_interfaces</id>
        <name>bank_privrepository_interfaces</name>
        <url>http://......:9090/repository/bank_privrepository_interfaces/</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
    <repository>
        <id>bank_privrepository_snapshots</id>
        <name>bank_privrepository_snapshots</name>
        <url>http://......:9090/repository/bank_privrepository_snapshots/</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>
<pluginRepositories>
    <pluginRepository>
        <!--中央仓库,插件安装 -->
        <id>nexus</id>
        <name>local nexus server</name>
        <url>http://......:9090/repository/bank_central/</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>

经历了反复的clean-build、maven force update及各种可能想得到的操作,某些依赖包依然无法下载。

后来突发奇想,将settings.xml中

<mirrors/>

配置项删除,重新force update,某些包可以下载下来了,但依然缺包,后来查阅各种资料,将setting.xml中*改为central

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

perfect!!!!!!!!!!!!!!!知其然不知其所以然,待更新

官方说明:https://maven.apache.org/guides/mini/guide-mirror-settings.html

*的意思就是(根据mirrorOf和repository的id)匹配所有的库(repository),这样就是说如果你需要某个jar,他会从镜像地址去下载这个jar。不管你配置了多少个库,即使这些库的地址不一样,仍然会从镜像地址访问


Maven是一个强大的项目管理和构建工具,基于POM(Project Object Model)的概念。通过配置Maven的`settings.xml`文件以及项目的`pom.xml`文件,可以自定义依赖库、插件等资源的下载源。 ### Maven配置下载的核心步骤 1. **修改全局或用户级 `settings.xml` 文件** - 这个文件位于`${M2_HOME}/conf/settings.xml`(全局) 或者 用户目录下的 `.m2/settings.xml `(本地),用于指定私服地址或其他镜像仓库。 ```xml <mirrors> <mirror> <id>aliyun</id> <name>阿里云国内镜像</name> <url>https://maven.aliyun.com/repository/public</url> <mirrorOf>*</mirrorOf> </mirror> </mirrors> ``` 2. **在 POM.XML 中声明远程仓库** 如果需要引入特定第三方提供的组件而非中央仓库内的,则需显式地将对应存储位置添加进 pom 的 repositories 节点下: ```xml <repositories> <repository> <id>jboss-public-repository-group</id> <name>JBoss Public Repository Group</name> <url>http://repository.jboss.org/nexus/content/groups/public/</url> </repository> </repositories> ``` 3. **缓存机制理解及清理** 当第一次引用某个新的依赖项时,如果未命中本地`.m2/repostiory`,会尝试从上述已设定好的远端获取并保存下来;若遇到网络异常导致失败记录错误版本信息等情况可通过删除相关路径重新触发抓取解决。 --- 以上就是关于如何配置 Mavan 下载环境的大致流程啦!如果有更复杂的需求还可以深入研究官方文档哦~
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值