簡體   English   中英

如何在gradle中替換依賴項的依賴項?

[英]How do I replace a dependency of a dependency in gradle?

我正在處理一個 Java 項目,該項目使用的庫依賴於具有安全漏洞的庫。 不幸的是,易受攻擊的庫的更新版本沒有相同的組。 基本上,庫org.reallyuseful.library:usefulstuff:1.0依賴於org.vulnerable.dependency:dependency:1.0 ,但該漏洞已在org.secure.dependency:dependency:1.1org.secure.dependency:dependency:1.1

在 Gradle 中,我如何告訴usefulstuff:1.0使用org.secure.dependency:dependency:1.1而不是org.vulnerable.dependency:dependency:1.0

您可以在構建文件中明確聲明對org.secure.dependency:dependency:1.1的依賴,如implementation("org.secure.dependency:dependency:1.1") 您指定的依賴版本將優先於傳遞依賴。

另一種選擇可能是指定exclude規則以確保不引入依賴項(參見示例

我認為最好的模式是我們使用用戶指南的依賴管理部分提供的工具。 在這種情況下,您應該能夠使用resolutionStrategy API。 您可以將所需的依賴項替換為最初請求的依賴項。

此示例為每個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")
    }
  }
}

該搖籃用戶指南還有一個例子,其中只有版本被改變,並且一個例子,這是非常類似於上面的片段(和你的使用情況)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM