【发布时间】:2021-07-14 17:27:58
【问题描述】:
我在一个项目中使用spring-cloud-cloudfoundry-connector-2.0.7.RELEASE.jar,该项目使用com.fasterxml.jackson.core:jackson-databind:2.10.0 文件作为影子JAR 构建(即这些文件包含在spring-cloud-cloudfoundry-connector JAR 中,而不仅仅是一个依赖项。
问题是,jackson-databind 2.10.0 现在存在已知的安全问题,但没有更新版本的带有修补 Jackson 文件的 Spring 库。所以,我需要做的是使用现有的 Spring 库但更新的 Jackson 库。如果它是一个普通的依赖,那就很容易了,但显然这些文件不能从 Spring 库中删除。
因此,有任何方法可以强制 Maven 忽略嵌入的 Jackson 类,而只使用较新的 Jackson 库(它已包含在我的主项目中)。
Gradle 构建文件(以及 Spring 项目的其余部分)可在此处找到:https://github.com/spring-cloud/spring-cloud-connectors/blob/master/spring-cloud-cloudfoundry-connector/build.gradle
【问题讨论】:
-
对此的简单回答:否(这是包含其他依赖项的阴影 jar 的大问题)这会阻止您拥有的所有选项...
-
@khmarbaise - 这就是我所担心的。
-
这不是您问题的直接答案,但避免此杰克逊阴影问题的长期解决方案是从 Spring Cloud Connectors 迁移到 Java CFEnv。在 Spring Boot 应用程序的许多情况下,CFEnv 是连接器的直接替代品(只需更改构建文件中的依赖项)。 github.com/pivotal-cf/java-cfenv#dependency-info
标签: java maven gradle spring-cloud-connectors