正确配置Maven镜像仓库

问题摘要

这几天需要学习一个大数据的项目,需要导入一些依赖,然而IDEA下载依赖遇到如下问题: )

Could not find artifact org.apache.flink:flink-shaded-hadoop-3-uber:pom:3.1.1.7.2.1.0-327-9.0 in aliyun (https://maven.aliyun.com/repository/public)

发现问题

这个报错的大意是,无法在阿里云的中央仓库找到 flink-shaded-hadoop-3-uber这个依赖。

去MVN中查看一下这个依赖:

mvn

有一行提示:这个依赖需要在Cloudera仓库中下载,这意味着阿里云中央仓库无法下载这个依赖

但是我pom文件中已经添加了相关repository

在这里插入图片描述

为什么IDEA仍然去阿里云仓库中添加依赖呢

解决问题

折腾一番,得到最终解释如下:

  • 对于依赖设置,pom文件遵循的原则是 局部 > 全局

  • 查看 Effective Pom 中的 repositories 标签
    在这里插入图片描述

  • 可见<repositories>标签可以包含多个 repository,并且默认包含中央仓库在最后的位置。记住每个 repositoryid 标签

  • Maven查找仓库流程

    • 获取pom.xml中的repository集合

    • settings.xml文件中寻找mirrors元素

    • 在这里插入图片描述

    • repositoryidmirror 中的每个 mirrorOf 依次匹配,如果二者相同,则该mirror替代该repository。如果未找到,则使用其本身。

  • 由于nexus-aliyun镜像 !cloudera排除了cloudera仓库,在 阿里云公共仓库被匹配! (图中修改过 mirrorOf 标签,原本是 * ,意味着匹配所有仓库)

  • 更改mirrorOf标签为 central,现在cloudera标签在settings.xml文件中未有仓库匹配,故使用其自身下载依赖。问题解决。

踩坑感想

  • 网上的博客质量参差不齐,笔者刚开始学习Java时,跟着教程配置过阿里云镜像用于加速下载依赖,但是这里的镜像匹配范围过大,故导致一个BUG的发生。

原作者出处:
maven cloudara依赖下载 - 生心无住 - 博客园 (cnblogs.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值