一、场景
在打包项目时,发现有一个maven提示:
The artifact org.apache.commons:commons-io:jar:1.3.2 has been relocated to commons-io:commons-io:jar
查资料发现, commons-io 的 groupId 已经更换为 commons-io,故对其进行更换。
<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>${commons-io.version}</version>
</dependency>
更换后重新打包模块,提示:
dependencies.dependency.version is missing
二、原因
可能有原因有几个:
1)没有在父工程的 dependencyManagement 中定义 commons-io 的版本号
2)父工程中定义的版本号,没有被子工程继承
三、错误排查和解决
3.1 查看版本号
发现版本号的确有定义
3.2 子工程是否继承
网上有大佬提示:
maven 对于父项目定义的dependencyManagement 中的 非 jar 类型的 type节点不会继承,也就是说子项目中必须再次声明非 jar 类型的type即可。
在子项目中对于缺少版本号的依赖写上版本号
根据提示,我用下面的方式解决了:
在子项目中先添加上了版本号,再重新打包。
打包成功后删除添加的这个版本号,再次打包。
感谢大佬~