dependencyManagement与dependencies的区别

        之前在项目当中遇到一个问题,创建maven module之后,发现module的classpath中并没有引入父项目的依赖jar包,后来查了半天,才发现父项目中的pom中的依赖是通过dependencyManagement来管理的,这个与dependencies不一样。之前我做项目时,父项目中直接都是用dependencies来管理依赖,这样的话,模块会自动继承父项目中的依赖,但是会有一个问题,就是如果子模块之间如果还有互相的依赖关系,就会导致包的重复,导致项目的体积变大。

        如果使用dependencyManagement的话,子模块必须要写明要依赖哪个jar包,但是依赖不需要指明version,如果指明的话,会将父项目中的继承下来,同时再引入当前自己写明的依赖,这样包就会重复。

        其实我个人认为这两种方式各有利弊,用dependencies的话,子模块中不用再写明需要哪些jar包,很方便,但是缺点是会导致项目的体积变大,不过我想在互联网项目中一般不会在乎这点空间。而使用dependencyManagement,有一点最烦人的就是在子模块中必须分别根据需要手动写明依赖的jar包,就是说你需要什么就写什么就行了,但是不用指定version,但是这样有个好处,就是防止包被重复引入依赖。其实可能有人会担心,用dependencies子模块都引入父项目的依赖,会引起包冲突,其实我个人感觉在操作上来说,dependencyManagement更容易引起包冲突,因为如果我们没注意父项目中是否添加依赖,而直接在子模块中添加,则反而更容易引起与父项目中的包冲突,而且即使没有继承所有的依赖包,但是模块之间依然会有重复的依赖,包照样会重复,只是没有dependencies重复的多而已,所以我个人还是倾向于使用dependencies来管理jar包,即使说项目体积大一点也无所谓,就是启动会慢一点而已。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值