我的项目中声明的依赖项之一具有对 'com.google.guava:guava:15.0'
的传递依赖项。但是由于已在 'com.google.guava:guava:15.0:cdi1.0'
中修复的 CDI 问题,我部署在 WAS/Weblogic 上的应用程序无法正常工作。 (相同版本,但带有分类器)我需要告诉 gradle 在构建和打包过程中使用这个 jar。我试图弄清楚我们如何使用特定于 jar 的版本分类器来覆盖这种传递依赖性。
尝试了以下方法:
显式添加依赖项:
compile 'com.google.guava:guava:15.0:cdi1.0'
。但是这两个罐子都包含在由此产生的 WAR 中。显式添加依赖并定义解析策略:
configurations.all {
resolutionStrategy {
force 'com.google.guava:guava:15.0:cdi1.0'
}
}
即使这样也行不通。
- 定义了一个解决策略来检查和更改版本。
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
if (details.requested.group + ":" + details.requested.name == 'com.google.guava:guava') {
details.useVersion "15.0:cdi1.0"
//details.useTarget "com.google.guava:guava:15.0:cdi1.0"
}
}
}
即使这样也行不通。
需要您就如何解决此问题提出建议。
原文由 dinup24 发布,翻译遵循 CC BY-SA 4.0 许可协议
当前,在涉及 resolutionStrategies 时尚未考虑分类器。在声明依赖项并显式添加 Guava
cdi1.0
版本时,您的解决方法可能会排除传递性 Guava 库: