Maven中dependencyManagement对依赖版本的影响及版本选择疑问
问题解答
结论
会使用1.0版本的hamcrest-core依赖。
核心原理
dependencyManagement标签的本质是统一声明依赖的版本、范围等配置模板,它不会主动引入依赖,也不会强制覆盖<dependencies>块中显式指定的版本:
- 若
<dependencies>中的依赖未指定<version>,Maven会自动继承dependencyManagement里的对应版本; - 若
<dependencies>中的依赖明确写了<version>,则优先使用这个显式声明的版本。
针对你的代码分析
你提供的POM代码如下:
<dependencyManagement> <dependencies> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-core</artifactId> <version>2.2</version> <scope>test</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-core</artifactId> <version>1.0</version> <scope>test</scope> </dependency> </dependencies>
其中<dependencies>块里的hamcrest-core明确指定了版本为1.0,所以Maven会直接使用这个版本,不会采用dependencyManagement中声明的2.2版本。
内容的提问来源于stack exchange,提问作者zeus
相关产品推荐
相关产品推荐

