我正在使用gradle,尽管我一直在使用exclude
成功删除我不想要的传递依赖项,但我似乎无法解决如何解决以下问题。
我们假设我有以下依赖项:
org.library:useful:2.0.0
+--org.library:logging:1.5
+--org.another-library:tools:1.9
+--org.library:logging:1.4
正如您所看到的,我在logging 1.5和logging 1.4之间存在版本冲突。在我的配置中,我知道我可以使用exclude执行以下操作:
config('org.library:useful:2.0.0') {
exclude(group: 'org.library', module: 'logging')
}
但是我如何说“exclude logging 1.4"
并非来自我所依赖的任何东西(在这个例子中它来自org.another-library:tools:1.9
)?
答案 0 :(得分:1)
处理可能存在依赖冲突并且您希望始终将其解析为某个版本这一事实的一种方法是使用具有强制的解决策略:
configurations.all {
resolutionStrategy {
force 'org.library:logging:1.5'
}
}
另请注意,在您的示例中,无论如何都会排除1.4,因为如果有version conflict,Gradle会默认选择最高版本。