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的区别介绍完毕。

相关推荐
老青蛙9 小时前
权限系统设计-用户设计
后端
echoyu.9 小时前
消息队列-初识kafka
java·分布式·后端·spring cloud·中间件·架构·kafka
yuluo_YX9 小时前
Go Style 代码风格规范
开发语言·后端·golang
David爱编程9 小时前
从 JVM 到内核:synchronized 与操作系统互斥量的深度联系
java·后端
彭于晏Yan10 小时前
SpringBoot优化树形结构数据查询
java·spring boot·后端
章丸丸10 小时前
Tube - Studio Videos
前端·后端
练习时长一年10 小时前
Spring事件监听机制(三)
java·后端·spring
2301_7813925210 小时前
用spring框架实现简单的MVC业务
java·后端·spring
phltxy10 小时前
SpringMVC 程序开发
java·后端·spring