dependencies和dependencyManagement的介绍

1. 产生背景介绍

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

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

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

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

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

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

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依然是生效的,自此对于 dependenciesdependencyManagement的区别介绍完毕。

相关推荐
陈随易16 分钟前
PostgreSQL v18发布,新增AIO uuidv7 OAuth等功能
前端·后端·程序员
java1234_小锋16 分钟前
[免费]基于Python的Flask+Vue物业管理系统【论文+源码+SQL脚本】
后端·python·flask·物业管理
konna1 小时前
3D模型AI生成技术分享
后端
用户298698530141 小时前
如何在 C# .NET 中将 Markdown 转换为 PDF 和 Excel:完整指南
后端·c#·markdown
golang学习记1 小时前
Jetbrains 下一代 IDE Fleet:倒下了!
后端
没带西川地图的张永年1 小时前
springboot加载配置文件几种方式
后端
镜花水月linyi1 小时前
执行SELECT/INSERT/UPDATE/DELETE的SQL语句,MySQL流程是怎么样的?
后端·mysql
狂奔小菜鸡1 小时前
Day33 | Java中的Optional
java·后端·java ee
天若有情6731 小时前
我发明的PROTO_V4协议:一个让数据“穿上迷彩服”的发明(整数传输协议)
网络·c++·后端·安全·密码学·密码·数据