You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 13:20:32