如何排除gradle依赖

kai*_*ido 4 spring jar gradle build-dependencies build.gradle

我目前有一个项目,我对其执行了水色扫描,它识别出我当前正在使用的 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'
    }
Run Code Online (Sandbox Code Playgroud)

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

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

Bjø*_*ter 5

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

但是,由于许多库(例如 Jackson)由许多单独的模块(例如jackson-databind和 )组成jackson-core,因此您最终可能会遇到不同版本之间不匹配的情况。

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

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"))
}
Run Code Online (Sandbox Code Playgroud)

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

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