Maven父子POM场景下Guava依赖版本确定规则咨询
Maven父POM dependencyManagement与子POM依赖版本规则
父POM的dependencyManagement配置
<dependencyManagement> <dependencies> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>32.1.3-jre</version> </dependency> </dependencies> </dependencyManagement>
场景1:子POM未声明依赖版本
子POM配置:
<dependencies> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> </dependency> </dependencies>
结论:会使用父POM dependencyManagement中定义的32.1.3-jre版本。dependencyManagement的核心作用是统一管理依赖版本,子POM未指定版本时,自动继承父POM定义的版本。
场景2:子POM声明低于父POM的版本(32.1.2-jre)
子POM配置:
<dependencies> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>32.1.2-jre</version> </dependency> </dependencies>
结论:会使用子POM中声明的32.1.2-jre版本。dependencyManagement仅提供版本默认值,子POM显式指定版本时,会覆盖父POM的配置。
场景3:子POM声明高于父POM的版本(32.1.4-jre)
子POM配置:
<dependencies> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>32.1.4-jre</version> </dependency> </dependencies>
结论:会使用子POM中声明的32.1.4-jre版本。子POM显式指定的版本优先级高于父POM dependencyManagement中的版本配置。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

