问题描述
今天在写一个小项目的时候,按照平常的步骤建立一个父模块用来管理所有子模块依赖的版本号,
父模块配置文件主要如下:
1 |
<groupId>org.example</groupId> |
然后建立子模块, 配置文件 如下:
1 |
<parent> |
然后, 问题来了 ,子模块pom文件爆红:
问题排查
点击刷新,重启IDEA都没有用。上网查了查,再看看我自己的项目:
1、父模块dependencyManagement加了呀
3、父模块中依赖版本号定义在properties标签中,引用也没错啊
2、子模块也声明了父模块:
然后我开始检查自己的maven配置,打开jar包存放的位置:
发现它果然创建了unknown文件夹。可是为什么子模块没有引用到父模块配置的版本号呢?
我再检查maven配置文件:settings.xml
配置好了阿里云镜像仓库,jar包存放的位置也没有问题。
那么,疑惑了。我甚至想删了这个maven,重新装一个试试。(当前是3.6.0版本的)
问题解决
我突然想起maven的生命周期里有一个clean,用来清理上一次构建过程中生成的文件等。
试着清理了一下父模块,清理成功,重新刷新maven:
等待maven进程执行完毕,发现问题解决了!子模块版本号全部变成了父模块统一定义的版本号。
总结
遇到maven子模块依赖继承不到父模块依赖定义的版本号的问题,解决步骤如下:
1、首先检查父项目中是否用:
1 |
<dependencyManagement> |
这个标签包裹依赖。
2、看看父模块依赖版本号引用有没有写错
3、检查子模块是否声明了父模块:
1 |
<parent> |
4、如果maven配置没有问题,试着清理一下项目,让maven重新构建,也许就成了。