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

相关推荐
百度Geek说11 分钟前
首发!百度百科全系能力上线千帆,权威知识增强Agent一键打造
后端
瑾曦39 分钟前
Maven高级
后端
bobz96541 分钟前
操作系统驱动崩溃为什么会导致系统卡顿?
后端
JVM高并发44 分钟前
MySQL 中处理 JSON 数组并为每个元素拼接字符串
后端·mysql
lgaof65822@gmail.com1 小时前
ASP.NET Core Web API 中集成 DeveloperSharp.RabbitMQ
后端·rabbitmq·asp.net·.netcore
天天摸鱼的java工程师1 小时前
面试官说:“设计一个消息中间件你会怎么做?”我当场就不困了 ☕️🚀
java·后端·面试
七七&5561 小时前
Spring全面讲解(无比详细)
android·前端·后端
Java水解1 小时前
【MySQL基础】MySQL复合查询全面解析:从基础到高级应用
后端·mysql
小马哥聊DevSecOps2 小时前
将 RustFS 用作 GitLab 对象存储后端
后端
生无谓2 小时前
java中的异常
后端