【问题标题】:How can I exclude a shadowJar during a Maven build?如何在 Maven 构建期间排除 shadowJar?
【发布时间】: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


【解决方案1】:

您可以通过手动删除 jackson-databind 文件来构建自己的 JAR 补丁版本。然后你可以使用一个新的版本号,比如2.0.7.RELEASE-patched

将其放入您的 Nexus/Artifactory 或本地存储库中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 2016-06-17
    • 1970-01-01
    • 2012-06-05
    • 2022-07-05
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多