Day15-03.maven高级-继承与聚合-版本锁定

Day15-03.maven高级-继承与聚合-版本锁定

(1)版本锁定

分模块之后我们一个项目可能拆分成好几个模块,各个模块所共有的这部分依赖我们就可以直接定义在父工程中,子工程继承了父工程之后,这部分依赖就可以全部继承下来。然后还有一部分依赖并不是各个模块共有的,只是部分模块需要,此时我们就需要在各个模块中单独来配置了。

比如我们项目拆分成了这样几个模块,其中web-management,web-system,web-report这几个模块需要用到JWT的依赖,那我们就需要在各个模块中分别来引入JWT的依赖。既然是统一的项目,各个模块中依赖的版本是不是应该保持一致?便于项目的统一管理和维护,比如我们当前使用的版本是0.9.1,将来假如我要升级JWT的版本,要修改为0.9.2应该怎么做?我们就得找到当前项目的所有模块,一个一个的去查看所有的pom文件,看一下用到JWT的以阿里没有,如果用到了,就将他修改为0.9.2。如果项目的模块拆分的比较多,很有可能遗漏到一两个模块,导致这两个模块的版本还是0.9.1这个版本。所以会发现,我们模块拆分的越多,依赖的版本号越不好管理。在Maven项目中,我们到底应该如何来统一管理各个依赖的版本呢?此时就可以使用Maven给我们提供的版本锁定功能。

1、在maven中,可以在父工程的pom文件中通过dependencyManagement来统一管理依赖版本

在Maven当中,我们可以在父工程中通过dependencymanagement来统一管理依赖的版本。需要注意的是,我们使用**dependencymanagement这个标签,它仅仅代表的是我们要统一管理这个依赖的版本,他并不会直接把这项依赖引入进来。如果我们在子工程中要用到JWT这项依赖,我们还需要通过dependenct这个标签手动引入,只不过此时子工程在引入这项依赖的时候,就不需要再通过version这个标签指定版本号了,**因为子工程继承了父工程,父工程中已经指定了JWT的版本了。所以子工程引入的依赖版本,就是父工程中统一管理的这个版本号。如果此时要修改依赖的版本号,就无需再子工程做任何操作,只需要在父工程中统一修改即可,这就被称为版本锁定。

2、子工程引入依赖后,无需指定version版本号,父工程统一管理。变更依赖版本,只需要在父工程中统一变更。

(2)演示

Snipaste_2024-07-01_10-38-49

(3)自定义属性/引用属性

我们可以在pom文件的properties标签中自定义标签,用它来表示版本号,用到的地方直接引用这个标签。

Snipaste_2024-07-01_10-43-45

为什么spring-boot-starter-web在parent中没有指定版本,子工程也不用指定版本呢?

因为parent还有一个父工程spring-boot-starter-parent,而spring-boot-starter-parent还有一个父工程spring-boot-dependencies,这个spring-boot-dependencies里面维护了很多版本信息,其中就包括spring-boot-starter-web。

(4)小结

1、dependenctManagement与dependencies的区别是什么?

①:dependencie是直接依赖,在父工程配置了依赖,子工程会直接继承下来

②:dependencyManagement是统一管理依赖版本,不会直接依赖,还需要在子工程中引入所需要的依赖(无需指定版本)

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值