maven报错:com.qiniu:qiniu-java-sdk/maven-metadata.xmlfailed to transfer from http://0.0.0.0/

1.问题情况

🌿 英文报错

com.qiniu:qiniu-java-sdk/maven-metadata.xmlfailed to transfer from http://0.0.0.0/ during a previous attempt. This failure was cached in the local repository and resolution will not be reattempted until the update interval of maven-default-http-blocker has elapsed or updates are forced. Original error: Could not transfer metadata com.qiniu:qiniu-java-sdk/maven-metadata.xml from/to maven-default-http-blocker (http://0.0.0.0/): transfer failed for http://0.0.0.0/com/qiniu/qiniu-java-sdk/maven-metadata.xml

🌿 中文意思

com.qiniu:qiniu java sdk/maven元数据。xml无法从转移http://0.0.0.0/在先前的尝试期间。此故障缓存在本地存储库中,在maven默认http拦截器的更新间隔结束或强制更新之前,不会重新尝试解决。原始错误:无法传输元数据com.qiniu:qiniu java sdk/maven元数据。xml从/到maven默认http拦截器(http://0.0.0.0/):传输失败http://0.0.0.0/com/qiniu/qiniu-java-sdk/maven-metadata.xml

2.问题分析

因为使用HTTP协议下载依赖,可能会导致中间人攻击。所以Maven 3.8.1就在默认配置文件中增加了一组标签,禁止了所有HTTP协议的Maven仓库。

因此使用maven3.8.1,如果仓库镜像是http 而不是https 就会被拦截禁止访问。

很多公司内部的maven仓库一般都是http协议,而Maven 3.8.1禁止了http协议,那么就会导致一些报错。

中间人攻击解释来自:中间人攻击

所谓中间人攻击就是在A和B通信的过程中加入了恶意攻击者C。C作为中间人转发两者的请求。

image-20221106014947861

上面是一个完整的中间人攻击流程:

  1. A向B请求公钥,但是却被C截获。
  2. C向B发送公钥请求。
  3. B将公钥发给C。
  4. C截获了B的公钥,然后替换成自己的公钥发给A。
  5. A将C的公钥当成了B的公钥,并用其加密信息,发给B。
  6. C截获了加密信息,用自己的私钥解密,获得明文。同时伪造新的信息,再用B的公钥加密,发给B。
  7. B获得加密信息,用自己的私钥解密。

3.问题解决

如果你为idea配置的settings.xml是含有如下:

image-20221106014545883

将该组mirror标签注释掉即可,如下图:

image-20221106015126374

4.其它思考(一定要看)

其实我感到很诧异,上述settings.xml我早已经不再使用,我是为Idea指定了新的settings.xml文件,放在了用户文件下的.m2下,并且修改为了阿里镜像。

image-20221106020139829

按道理来说是没有拦截http的标签(在指定新的settings.xml时已经被我删除),而且这个报错问题也是突然发生的,之前没遇见过。

image-20221106015633319

但考虑到报错信息中谈到了http被拦截问题,并且我并未去注释idea自带settings,xml的http拦截器标签,于是我在阿里镜像的url中修改成了https路径:

image-20221106015838345

保存过后再去项目中刷新maven或者执行clean、package、install等操作,没有再报错了。

这就很奇怪了,我明明指定的.m2文件下没有拦截标签的settings.xml文件,却依旧是参考了idea自带settings.xml文件中的http被拦截规则(http拦截器生效),导致 <url>http://maven.aliyun.com/nexus/content/groups/public/</url>中由于访问路径是http而被http拦截器拦截而报错。

考虑到之前进行的所有Maven操作我都是能正常使用,这次的报错偶然性的,因为我在后来又将.m2下的settings.xml中的路径改为了http,并且并没有注释掉idea自带settings.xml的http拦截器标签,因此我目前只能归结为是 idea 的系统混乱Bug。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是谢添啊

感谢你的支持,我会继续加油的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值