问题描述
明明我本地有某个依赖但是却还是报错,原因就是存在_remote.repositories且你的远程仓库中找不到该依赖,可能发生在你修改了远程仓库或镜像时。
例子
本地有这个依赖,但是报错。
解决
删除_remote.repositories文件,如果有.lastUpdated文件(点击查看lastUpdated文件作用),最好也删除。
原因
_maven.repositories是用于记录该依赖从哪个远程存储库,如果你有这个_remote.repositories,那就会在访问本地的同时,必须确保远程上有才行,否则就会报错。
这个文件的内容表示junit-bom-5.3.2.pom文件第一次是从central中央仓库下载的,后面切换了远程仓库或镜像,又从aliyunmaven下载的,maven在使用时会去看远程仓库是否有这个依赖,aliyunmaven是mirror或repository的id。
为什么这样做?
官方解释:
在maven 3.0.x以前是不会这样做,不会产生_remote.repositories文件的,以上可以看出主要为了保证依赖一致的从而保证成功构建,如你从中央仓库下载了commons-io:commons-io:2.0依赖,后来你在本地清除了该依赖,你将远程仓库设置为了java.net2远程仓库,但是你会发现构建失败了,原因是因为java.net2仓库中的commons-io:commons-io:2.0和中央仓库的commons-io:commons-io:2.0完全不是一个东西,所以这个文件就是防止依赖的不一致。
至于这个怎么对比两个依赖是否是一个我没找到资料,我猜测是对比文件sha1校验文件,如果是一致的校验文件也应该是一样的,有时我们能在本地看到这个sha1文件。
参考
maven依赖下载失败原因分析;_remote.repositories简述
_remote.repositories文件的作用/Maven修改setting文件后本地仓库缓存了jar或pom但还是去远程仓库获取
maven can’t find my local artifacts
使用Maven管理项目时,明明本地仓库有对应的jar包,但还是报找不到