如何替换gradle中的依赖项的依赖项?

罗伯·沃茨(Rob Watts):

我正在使用一个Java项目,该项目使用的库依赖于具有安全漏洞的库。不幸的是,易受攻击的库的更新版本没有相同的组。基本上,该库org.reallyuseful.library:usefulstuff:1.0取决于org.vulnerable.dependency:dependency:1.0,但该漏洞已在中修复org.secure.dependency:dependency:1.1

在Gradle中,如何告诉我usefulstuff:1.0使用org.secure.dependency:dependency:1.1代替org.vulnerable.dependency:dependency:1.0

mkobit:

您可以在构建文件中显式声明对org.secure.dependency:dependency:1.1like 的依赖implementation("org.secure.dependency:dependency:1.1")您指定的依赖项版本将优先于传递性依赖项。

另一个选择可能是指定一个exclude规则以确保不引入依赖关系(请参阅示例

我认为最好的模式是我们使用用户指南的“ 依赖关系管理”部分提供的工具在这种情况下,您应该可以使用resolutionStrategyAPI。您可以将所需的依赖项替换为最初请求的依赖项。

本示例为每个配置一个解决规则Configuration

configurations.all {
  resolutionStrategy.eachDependency { DependencyResolveDetails details ->
    if (details.requested.group == "org.vulnerable.dependency"
        && details.requested.name == "dependency"
        && details.requested.version == "1.0") {
      details.useTarget("org.secure.dependency:dependency:1.1")
    }
  }
}

Gradle用户指南还提供了一个示例,其中仅更改了版本,并且该示例与上述代码片段(以及您的用例)非常相似。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章