Maven依赖版本号不生效

Maven依赖版本号不生效,第1张

Maven依赖版本号不生效

        最近受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-sdk
        2.0.5-SNAPSHOT
        
        
            
                org.apache.logging.log4j
                log4j-slf4j-impl
            
            
                org.apache.logging.log4j
                log4j-core
            
            
                org.apache.logging.log4j
                log4j-api
            
        
    
    
    
        org.apache.logging.log4j
        log4j-api
        2.15.0
    
    
        org.apache.logging.log4j
        log4j-core
        2.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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5676876.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存