【问题标题】:how to exclude gradle dependencies如何排除 gradle 依赖项
【发布时间】:2020-06-09 16:14:56
【问题描述】:

我目前有一个项目,我对其执行了水扫描,它发现我当前使用的 jackson-databind-2.9.8.jar 是一个严重漏洞,并建议我更换为 2.10 版本。为了更新这一点,在确保所有其他依赖项/代码正常工作的同时,我在 build.gradle 文件中尝试了以下代码,其中 group_name:microservice-event:0.2.+ 显示在列表中gradle 依赖项,显然带来了导致问题的 2.9.8 jar:

    implementation 'com.fasterxml.jackson.core:jackson-databind:2.10'

    implementation('*group_name*:microservice-event:0.2.+') {
        exclude group: 'com.fasterxml.jackson.core', module: 'jackson-databind'
    }

我还删除了之前在 build.gradle 文件中的 implementation '*group_name*:microservice-event:0.2.+' 行。

但是,现在项目无法构建,我不知道为什么。有谁知道如何在 build.gradle 文件中编写代码以成功排除旧的 jars/依赖项,同时允许新的 jars(正如我尝试使用行 implementation 'com.fasterxml.jackson.core:jackson-databind:2.10' 所做的那样)。请注意,我不想更新 spring boot 版本。

【问题讨论】:

  • 它失败并出现什么错误?另外我不确定杰克逊 2.9 和 2.10 是否真的兼容。因此,由于不兼容,您可能仍需要坚持使用 2.9。

标签: spring gradle jar build.gradle build-dependencies


【解决方案1】:

Gradle 遇到同一个依赖的两个不同版本时,会执行冲突解决。默认选择最高版本号。

但是,由于像 Jackson 这样的许多库都包含许多单独的模块,例如 jackson-databindjackson-core,因此您最终可能会遇到不同版本之间不匹配的情况。

要对齐它们,您可以使用 Jackson BOM 和 Gradle 的 platform dependency 机制。它看起来像这样(仅选择以下依赖项之一):

dependencies {
  // Enforce the specified version
  implementation(enforcedPlatform("com.fasterxml.jackson:jackson-bom:2.10.4"))

  // Align all modules to the same version, but allow upgrade to a higher version
  implementation(platform("com.fasterxml.jackson:jackson-bom:2.10.4"))
}

您不需要从其他依赖项中排除任何内容。

如果您在升级后遇到使用 Jackson 的问题,您应该查看release notes for 2.10 并检查您是否会受到任何兼容性更改的影响。当然,如果问题出在第三方库中,则可能更难以修复。不过你可以试试2.9行的最新版本(此时是2.9.10),看看这里漏洞是否修复。

【讨论】:

  • 对于其他用户,我想补充一点,如果您使用的是 jackson-databind 2.13.2.1 并考虑到其他 jackson 依赖项(如 jackson-jdk8、jackson-jsr 等)未作为 2.13 发布.2.1 但作为 2.13.2 或任何其他版本,那么您可以指定使用 jackson-databind 作为 2.13.2.1 版本和平台版本类型的其他依赖项的单独依赖项,如本答案所示。当我们更改 Spring boot 使用的 jackson 版本时,这变得非常方便。感谢您的回答。我只能通过在 build 中更新 ext['jackson.version']='2.13.2.1' 来解决我遇到的错误。
猜你喜欢
  • 1970-01-01
  • 2017-09-08
  • 1970-01-01
  • 1970-01-01
  • 2020-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-05
相关资源
最近更新 更多