Maven多模块中依赖版本覆盖不生效问题求解
解决Maven跨模块依赖版本覆盖问题
问题根源在于你只在core模块的<dependencyManagement>里配置了dep-core的版本,这个配置仅对core模块自身生效,其他子模块(比如custom)不会继承core的dependencyManagement规则,所以dep还是会拉取旧版的dep-core。
要一次性解决所有子模块的版本统一问题,只需做以下操作:
- 找到项目的根父POM(如果项目还没有统一的父POM,先创建一个作为所有模块的父项目)
- 在父POM的
<dependencyManagement>标签中添加dep-core的版本声明,固定为2.0版本:<dependencyManagement> <dependencies> <dependency> <groupId>你的dep-core的groupId</groupId> <artifactId>dep-core</artifactId> <version>2.0</version> </dependency> </dependencies> </dependencyManagement> - 确保所有子模块(core、custom以及其他20个自定义模块)的POM中,都通过
<parent>标签正确继承这个父POM:<parent> <groupId>父POM的groupId</groupId> <artifactId>父POM的artifactId</artifactId> <version>父POM的版本</version> </parent>
这样配置后,Maven会在所有子模块的依赖解析过程中,优先使用父POM中指定的dep-core 2.0版本,不管是core里的dep间接依赖,还是其他模块的依赖,都会统一生效,无需在每个子模块重复配置。
验证方法:在custom模块执行mvn dependency:tree,查看dep-core的版本是否已经更新为2.0。
内容的提问来源于stack exchange,提问作者Panossa
相关产品推荐
相关产品推荐

