Maven中<dependencies>和<dependencyManagement>
在父工程 <dependencies> 中声明 → 所有子模块自动继承
在父工程 <dependencyManagement> 中声明 → 子模块需要时才显式引入,否则不在子模块中生效。
参考qk-parent项目:https://gitee.com/he_shao_chen/qk-parent.git
Lombok:在父工程 <dependencies> 中声明 → 所有子模块自动继承
MyBatis、JWT:在父工程 <dependencyManagement> 中声明 → 子模块需要时才显式引入
这样设计既保证了版本统一,又避免了不必要的依赖传递!🎯
父工程 pom.xml(版本管理): <!-- 只定义版本,不实际引入 -->
子模块 pom.xml(实际引入,无需版本号): <!-- 真正引入依赖,版本从父工程继承 -->
Maven 依赖管理的两个概念
1. dependencyManagement - 版本管理(不实际引入)
作用:只是声明和统一管理版本号,不会真正将依赖添加到项目中
位置:父工程的 <dependencyManagement> 标签内
效果:子模块可以省略版本号,但必须显式声明依赖
2. dependencies - 实际依赖(真正引入)
作用:真正将依赖引入到当前模块
位置:各模块的 <dependencies> 标签内
效果:只有在这里声明的依赖才会被下载和使用
为什么这样设计?
这是 Maven 的最佳实践,原因如下:
灵活性:不是所有子模块都需要 JWT 依赖
qk-common 可能不需要 JWT
qk-entity 可能不需要 JWT
只有 qk-management 需要 JWT
避免冗余:如果父工程在 <dependencies> 中声明,所有子模块都会继承,造成不必要的依赖
版本统一:通过 dependencyManagement 统一管理版本,子模块引用时不需要写版本号,避免版本冲突

浙公网安备 33010602011771号