现象:当我们从代码仓拉取新项目时,从该项目的开发同事拿到其maven的settings文件,作为项目的maven配置,为了是能找到工程中所依赖的包,能从远程仓下载下来。 然后本地仓的包,也从同事那边拷贝一份过来,直接运行mvn -install 会显示找不到xxxx包
1、本地我们也已经同步了有包,而且远程仓也是有的,为什么没办法从本地获取。 因为本地的包文件夹中有这个 _remote.repositories 文件。 这个文件存在的意思是, 本地 跟 远程仓库都必须同时存在这个jar包资源才行
而这里还有一个问题就是idea去跑settings文件时,找到主仓发现没有,就报错了,没去对应的仓库找,我们settings文件是配置了多个仓库,在<mirror><url></url></mirror>位置配置的仓库地址就是其中一个,作为主仓,maven会优先从这个仓库去找包,如果没有那么就会从<repository><url>标签内的其他仓库依次去找 。而且加上idead的 Reload All Maven Project冲加载包功能,没有去挨个找仓库的小问题,有时候只会在mirror里面找,无法解释清楚,配置mirror主仓目的是加快下载包,而且这个主仓一般都包含多数依赖包
所以最好就是将这类文件都需要删除
解决方案:
直接通过更换本地仓库地址,重新创建一个新的空的本地文件做本地仓库地址、并执行 mvn clean package -U -s D:\tools\settings.xml -gs D:\tools\settings.xml 命令解决了下载包的问题。
报出了第二个问题,点击IDEA的 Reload All Maven Project 刷新按钮,就报错了
其实跟第一个问题是相关的:
可以切换了mirror的仓库地址,切换成实际存在的那个仓库地址,再重跑
归根结底,就是把本地仓清空,然后重新运行maven,把报错找不到的那个包所在仓库,改为mirror的主仓地址,再重跑就可以下载到依赖了
另外也有可能是idea的配置问题 ssl证书问题,参考下面帖子