[英]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.1
中org.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.