Gradle,如何禁用所有传递依赖
Posted
技术标签:
【中文标题】Gradle,如何禁用所有传递依赖【英文标题】:Gradle, How To Disable All Transitive Dependencies 【发布时间】:2013-07-22 20:35:14 【问题描述】:我的许多 jar 都具有冲突的传递依赖项(多个 spring 版本)。我想通过显式管理我的所有依赖项来避免继承的版本冲突,是否可以禁用 Gradle 中的所有传递依赖项?
我知道我可以将transitive = false
添加到我的每个依赖项中,但我希望有更简单的方法。
compile(group: 'org.springframework', name: 'spring', version: '2.5.2')
transitive = false
【问题讨论】:
【参考方案1】:就我而言,我有一个项目(gradle 模块)依赖。我使用以下内容来排除 Gradle 3 中的传递依赖:
implementation(project(':<module_name>'))
transitive = false
或者在 Kotlin 脚本中:
implementation(project(':<module_name>'))
isTransitive = false
【讨论】:
【参考方案2】:如果您希望所有配置都只有一个配置块,您可以使用扩展点运算符来表达这一点。
configurations
// other configurations e.g. - compile.exclude module: 'commons-logging'
all*.transitive = false
【讨论】:
【参考方案3】:我最终使用了:
configurations.all
transitive = false
【讨论】:
另一种解决方案是告诉 Gradle 在版本冲突时失败并显式解决 那些(而不是显式管理所有传递依赖项)。 如果您对自己的答案感到满意,您应该接受它,以便将问题标记为已回答。 @PeterNiederwieser 您必须等待 48 小时才能接受您自己的答案。以上是关于Gradle,如何禁用所有传递依赖的主要内容,如果未能解决你的问题,请参考以下文章
Gradle:获取传递依赖项并导出到最小的运行时 fat jar
Android Gradle 插件Android 依赖管理 ⑤ ( Gradle 依赖优化 | 命令行查看依赖模块 | 依赖冲突问题 | 依赖传递冲突 | 分库冲突 | 依赖分组不同导致冲突 )