el表达式需要引入的包_maven 基础 dependencyManagement jar包依赖冲突

dependencyManagement

dependencyManagement是声明而不引入依赖--------因此子项目需要显式的声明需要用的依赖(不需要版本号)

子项目中引用一个依赖而无版本号时,会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,使用其版本号

一般来说用来管理版本的父工程都会使用这个标签进行统一版本管理。里面放dependencies标签。

然后,如果,父工程里只有dependencies标签,没有dependencyManagement标签,那么父工程的依赖会直接传递到子工程当中,即子工程即使没有引入A包,但是会有子工程的parent里有A包,那么就会导致子工程包含A包。这种方式一般来说都很少使用,只能是我们自己搭建demo的时候很随意的时候用用。一般公司项目都是dependencyManagement在父工程控制版本,然后子工程引入相应依赖而不声明版本,这样进行统一管理。

maven的版本冲突

17d4123153bed3570acba1e56e365ccd.png

上述过程中,项目Mall归结起来,依赖的fastjson会有三个版本。

而我们的jvm最终肯定只能接受一个版本的jar,所以必须有所取舍

maven默认的取舍规则是:

1、路径最短原则:product和customer里的fastjson引用路径较短,路径为两步 ;pay项目里的fastjson引用路径较长,路径为三步。因此pay中的fastjson被淘汰

2、同路径长度下,谁先声明谁优先: product和customer中的fastjson路径相同,那么就看在pom中是先声明product还是先声明customer,谁先用谁的

mvn dependency:tree

查出项目最终依赖的jar包树,看版本是否是我们预期的

--------------------------声明-------以上学习于腾讯课程的《享学课堂》

<profile>
      

maven配置的时候记得把这个加上,不然每次创建新项目默认使用1.5的编译器,识别不了lambda表达式。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值