dependencies和dependencyManagement的介绍

1. 产生背景介绍

Maven 是一款构建和管理 Java 项目的工具我们掌握了 Maven 工具的基本使用之后,其实对于一些简单的项目的构建及管理基本上就没什么问题了。

但是如果我们需要开发一些中大型的项目,此时仅凭简单的 Maven 的基础框架就比较难以应对了。这时候就需要将JAVA项目拆成多个模块进行开发,即分模块设计。

如图,一个较为完备的java项目在一个父类的模块包中会有很多子类的模块包,同时就有一个父pom文件和多个子pom文件,一父类多子类,在java中很容易就想到了继承。当然这里的父pom和子pom之间也可以创建属于他们的继承关系,正是本文要提到的dependencies和dependencyManagement,不过这两个定义模块的关键字并非是真正让他们产生继承关系的关键字。

上图是父pom的配置方式,需要注意的是父pom的打包方式必须是pom。

那么这张图片就是子pom继承父pom的配置方式了。

配置完成后,就可以开始了解dependencies和dependencyManagement的作用了。

2. dependencies和dependencyManagement

  • dependencyManagement:在maven中,可以在父工程的pom文件中通过 <dependencyManagement> 来统一管理依赖版本。不过值得注意的是,<dependencyManagement>只能统一管理依赖版本,并不会将依赖直接引入。而<dependencyManagement>的管理能力体现在他的版本锁定功能。当多子pom中需要引用同一个依赖时,有可能会出现一个项目多个依赖版本的情况,而版本锁定功能就是当子pom引入被 <dependencyManagement> 管理的依赖时,不需要指定版本,因为在父依赖中已经锁定了依赖的版本,接下来以图片的形式来介绍版本锁定的方法。

如图所示,将要锁定的版本写在properties中,然后再管理模块中用$符号来接收锁定的版本。自此,如图所示的jjwt依赖锁定版本为0.9.1成功。在子pom中注入jjwt依赖不需要再指定版本了。

  • dependencies:这个模块在父pom和子pom中是可以实现依赖的传递性的,当父pom中有某一依赖A的注入时,继承他的子pom对应的模块可以直接使用A依赖。

可以看到子模块的子pom中没有父模块中的lombok依赖,但是子模块的类使用的lombok依然是生效的,自此对于 dependencies和dependencyManagement的区别介绍完毕。

相关推荐
Java爱好狂.26 分钟前
Java初学者如何一周速通SpringBoot!
java·spring boot·后端·spring·高并发·架构师·java面试
马良神笔2 小时前
2026 年Rag最近技术前沿总结
后端·python·django
程序猿DD2 小时前
同样10美元,OpenDesign和Command Code的DeepSeek V4.1 Flash额度到底有多少?
后端
高频因子挖掘机3 小时前
A股量化从日线升级到5分钟线:数据量增加后最先暴露哪些工程问题?
后端·github·api
高频因子挖掘机3 小时前
历史行情返回顺序变了,为什么按行号计算指标很危险?
后端·github·api
团子哒哒5 小时前
数组、切片和Map
后端
专注仿真5 小时前
ThinkPHP6 API接口开发实例:从零搭建RESTful风格接口
后端·php·restful
开心猴爷5 小时前
应对iOS审核4.3:可以使用 IpaGuard 来给属性名混淆的技术细节与平衡之道
后端·ios
1m555555555 小时前
RAG 工程实战(五):正确知识已经进入 Prompt,为什么大模型还是会答错?
后端·面试
易小尊5 小时前
我的模型在 65% 以上时准得可怕,在 50% 时像在掷硬币
后端