最近受log4j2的漏洞的影响,全网码农开始升级log4j2。我这里的服务也需要升级,但是我遇到了一个问题:修改依赖之后发现版本号没有变化。
一、依赖现状
项目A依赖了一个common包,common包里面依赖log4j2
org.springframework.boot spring-boot-dependencies${spring.boot.dependencies.version} pom import ... com.exmaple.foundation common${common.version}
common包依赖修改:
com.example.mq producer-sdk2.0.5-SNAPSHOT org.apache.logging.log4j log4j-slf4j-implorg.apache.logging.log4j log4j-coreorg.apache.logging.log4j log4j-apiorg.apache.logging.log4j log4j-api2.15.0 ... org.apache.logging.log4j log4j-core2.15.0
本以为这样是可以生效的,但实际并没有生效。后来查阅maven依赖关系,发现有以下原因:
1)dependencyManagement优先级要高于dependencies中的
2)spring-boot-dependencies依赖log4j2,版本是2.10.0
3)spring-boot-dependencies放到了dependencyManagement,所以最终使用的版本是2.10.0
这是根因,既然知道了根因,那就好解决了,通过spring官网获得最终解决方案
二、官方修改建议
通过查看spring官方修改意见,如下图示:
Log4J2 Vulnerability and Spring Boot
按照springboot官方提出的修改意见,最终生效。
三、总结
maven依赖很少出现问题,但是真出问题了还是挺难弄的。这个问题困惑了一天,才最终解决。特地写一篇博客记录下:dependencyManagement的优先级要高于dependencies
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)