Maven 依赖中的 dependencies 和 dependencyManagement
有时候我们对 dependencies 和 dependencyManagement 可能会有点晕。
我们简单来说这个就常考虑在 parent pom 中定义的情况。
简单来说就是 dependencyManagement 管版本,dependencies 管依赖。
dependencies
所有在 dependencies 中定义的依赖都会被在子项目中自动引入,并被子项目继承。
dependencyManagement
dependencyManagement 提供的是版本号的管理方式。
举个常用的例子:
如果我们在 parent pom 中定义了:
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.6.1</version>
<scope>test</scope>
</dependency>
那么在子 pom 中,就不需要重新定义
<artifactId>junit-jupiter-engine</artifactId>
的版本号了,子项目会到父项目中去找 junit-jupiter-engine 的版本号。当然你也可以在子项目中定义 junit-jupiter-engine 的版本号。
这个允许你来选择与父版本不同的版本号。
区别和使用
如果你想定义一个 jar 或者 Package 在所有子项目都使用的话,你需要使用 dependencies 来进行定义。这样所有你在 dependencies 中定义的 Package 将会自动被导入到子项目中。
dependencyManagement 只是声明依赖,并不实际导入 Package。所以在 dependencyManagement 中声明的 Package 还必须在子项目中再声明一次。
https://www.ossez.com/t/maven-dependencies-dependencymanagement/578
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2019-10-12 Gradle 的项目导入到 IntelliJ 后子项目源代码不能导入
2019-10-12 在 CentOS 7 上安装 RabbitMQ