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

相关推荐
Anita_Sun2 小时前
一看就懂的 Haskell 教程 - 类型签名
后端·haskell
七八星天2 小时前
C#代码设计与设计模式
后端
砍材农夫3 小时前
threadlocal
后端
神奇小汤圆3 小时前
告别手写HTTP请求!Spring Feign 调用原理深度拆解:从源码到实战,一篇搞懂
后端
布列瑟农的星空3 小时前
前端都能看懂的Rust入门教程(三)——控制流语句
前端·后端·rust
汤姆yu3 小时前
基于springboot的尿毒症健康管理系统
java·spring boot·后端
暮色妖娆丶3 小时前
Spring 源码分析 单例 Bean 的创建过程
spring boot·后端·spring
野犬寒鸦3 小时前
从零起步学习JVM || 第一章:类加载器与双亲委派机制模型详解
java·jvm·数据库·后端·学习
Java编程爱好者3 小时前
Seata实现分布式事务:大白话全剖析(核心讲透AT模式)
后端
神奇小汤圆3 小时前
比MySQL快800倍的数据库:ClickHouse的性能秘密
后端