最近遇到一个奇葩问题,记录一下
搭建一个springboot父子模块项目,父模块为elk,子模块为springboot-elasticsearch
遇到的问题是 在父模块中引入了spring-boot-dependencies,来管理springboot的版本,但是在子模块中一直报spring-boot-starter-data-elasticsearch的版本缺失
正常情况下,spring-boot-dependencies里已经有了spring-boot相关jar包的版本声明,子模块应该会继承父模块的所有版本才对
在清理,clean,重启等等无效操作之后,开始百度...
记录一下尝试操作:
- 在子模块添加<relativePath>../pom.xml</relativePath>
- 结果无效
- 说明下该属性的作用: 不加该属性也会有默认值 ../pom.xml(上级目录) maven查询依赖的顺序 relativePath中的地址->本地仓库->远端仓库, 将此属性设置为空,就会一直从仓库获取
- 给所有子模块加上版本号
- 有效
- 但是违背了统一版本管理的初衷,只是证明jar包环境没问题,还是哪里的程序有问题
- dependenciesManagement 设置scope为import (有效)
- 最终答案就是这个
- 正常情况下dependencies的scope只有(provided,compile,system,test,runtime)几个,但是dependenciesManagement 中可以使用import,引入该包的依赖pom,注意import只能在dependenciesManagement 中使用
特此记录!!!!