Maven依赖版本号不生效
生活随笔
收集整理的這篇文章主要介紹了
Maven依赖版本号不生效
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
????????最近受log4j2的漏洞的影響,全網碼農開始升級log4j2。我這里的服務也需要升級,但是我遇到了一個問題:修改依賴之后發現版本號沒有變化。
一、依賴現狀
項目A依賴了一個common包,common包里面依賴log4j2
<dependencyManagement><dependencies><dependency><!-- Import dependency management from Spring Boot --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring.boot.dependencies.version}</version><type>pom</type><scope>import</scope></dependency></dependencies> </dependencyManagement><dependencies><dependency><groupId>com.exmaple.foundation</groupId><artifactId>common</artifactId><version>${common.version}</version></dependency>... </dependencies>common包依賴修改:
<dependencies><dependency><groupId>com.example.mq</groupId><artifactId>producer-sdk</artifactId><version>2.0.5-SNAPSHOT</version><!-- 排除舊版本log4j2 --><exclusions><exclusion><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j-impl</artifactId></exclusion><exclusion><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId></exclusion><exclusion><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId></exclusion></exclusions></dependency><!-- 引入新版本log4j2 --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>2.15.0</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.15.0</version></dependency>... </dependencies>?本以為這樣是可以生效的,但實際并沒有生效。后來查閱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
總結
以上是生活随笔為你收集整理的Maven依赖版本号不生效的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: XSL 和 XSLT的区别
- 下一篇: 【20210805】【数据分析】标称型数