背景
eclipse中有A,B两个项目。现在B需要引入一个jar X,X在A中可以从远处库拉取,在B中不行,只拉下来pom文件等其他文件。A、B项目在同一个工作空间。
同步环境,唯一化变量
1、同一个工作空间,maven 版本一致3.5.4
2、同步maven的setting文件以及项目pom文件中对远程仓库的配置。
具体分析问题
经过上面的同步环境,以及其他以前经历,分析得到:A、B项目都可以访问仓库,x jar 的引用声明也没有问题。
分析1:jar包冲突会引起jar包引入失败?(A,B项目jar包依赖肯定不同,会不会x jar 会引起B的jar冲突,而A不会)
验证:新建一个空项目,使用A的pom文件(文件中有远程仓库的配置信息),只引入X jar 包其他内容清空。maven update 之后,依旧只有pom文件
分析2:能否看到maven的日志,告诉我具体是什么原因导致拉取x jar包 失败?
验证:初步百度,没有结果。突然想到,虽然maven update 的时候看不到信息,但是 maven install 却可以,其中有下载依赖的信息描述。
通过install后查看信息,发现install 过程中说导入 x jar 的父项目 找不到(我只是需要x jar包,为什么需要连带它的父项目?)。分析x 的pom 文件,发现声明的父项目版本号是2.0,但是远程仓库没有2.0版本的父项目。
通过打包发布2.0的父项目,成功为B引入了x jar
思考
那么为什么A项目同样存在这个问题,它却可以正常拉取呢?就好比甲乙两个人去同一个书店(远程仓库地址一样)买书,书名作者都一致(jar包的artifact、group),同一个营业员招待(maven版本一致)。结果甲买到了书,乙却买不到?