gradle依赖包被降级的问题
Published on: | Views: 266因为log4j的一个注入漏洞,需要升级log4j版本解决。 最新的log4j版本是2.17, 跟据项目用到的日志框架(slf4j-log4j), 所以需要升级依赖包:
compile('org.apache.logging.log4j:log4j-slf4j-impl:2.17.0')
这个包原本的依赖如下:
\--- org.apache.logging.log4j:log4j-slf4j-impl:2.17.0
+--- org.slf4j:slf4j-api:1.7.25
+--- org.apache.logging.log4j:log4j-api:2.17.0
\--- org.apache.logging.log4j:log4j-core:2.17.0
\--- org.apache.logging.log4j:log4j-api:2.17.0
然后在实际项目中,依赖却变成了:
\--- org.apache.logging.log4j:log4j-slf4j-impl:2.17.0
+--- org.slf4j:slf4j-api:1.7.25
+--- org.apache.logging.log4j:log4j-api:2.17.0 -> 2.11.1
\--- org.apache.logging.log4j:log4j-core:2.17.0 -> 2.11.1
\--- org.apache.logging.log4j:log4j-api:2.11.1
这时显示log4j-api从2.17.0被降级为2.11.1 排查了其他依赖,发现没有任何其他地方引入了这个包 折腾了好久,发现是这个小可爱导致的:
apply plugin: 'io.spring.dependency-management'
因为使用了依赖管理,如果不明确指定包版本号,那就会自动使用了里面的版本 项目中没有明确指定log4j-api的版本,所以就使用了依赖管理里面的版本号2.11.1 这显示不是我们想要的效果,了解一下文档: 文档:https://docs.spring.io/dependency-management-plugin/docs/current-SNAPSHOT/reference/html/
解决
方法一 修改依赖管理中的版本:
dependencyManagement {
imports {
mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Greenwich.RC2'
}
dependencies {
dependency 'org.apache.logging.log4j:log4j-slf4j-impl:2.17.0'
dependency 'org.apache.logging.log4j:log4j-api:2.17.0'
dependency 'org.apache.logging.log4j:log4j-core:2.17.0'
}
}
方法二 直接修改依赖配置中的版本
dependencies {
compile('org.apache.logging.log4j:log4j-slf4j-impl:2.17.0')
compile('org.apache.logging.log4j:log4j-api:2.17.0')
compile('org.apache.logging.log4j:log4j-core:2.17.0')
}