Gradle,如何禁用所有传递依赖项

Mik*_*der 42 dependencies gradle transitive-dependency

我的许多罐子都有相互矛盾的传递依赖(多个弹簧版本).我想通过显式管理所有依赖项来避免继承的版本冲突,是否可以禁用Gradle中的所有传递依赖项?

我知道我可以添加transitive = false到每个依赖项中,但我希望有一种更简单的方法.

compile(group: 'org.springframework', name: 'spring', version: '2.5.2') {
    transitive = false
}
Run Code Online (Sandbox Code Playgroud)

Mik*_*der 49

我最终使用:

configurations.all {
    transitive = false
}
Run Code Online (Sandbox Code Playgroud)

  • 另一种解决方案是告诉Gradle在版本冲突时失败并明确解析*那些*(而不是明确地管理所有传递依赖项). (2认同)

mic*_*man 7

如果您只想为所有配置配置一个配置块,可以使用spread-dot运算符来表达这一点.

configurations {
    // other configurations e.g. - compile.exclude module: 'commons-logging'
    all*.transitive = false
}
Run Code Online (Sandbox Code Playgroud)


Bri*_*SFT 5

就我而言,我有一个项目(gradle 模块)依赖项。我使用以下内容来排除 Gradle 3 中的传递依赖项:

implementation(project(':<module_name>')) {
    transitive = false
}
Run Code Online (Sandbox Code Playgroud)

或者在 Kotlin 脚本中:

implementation(project(':<module_name>')) {
    isTransitive = false
}
Run Code Online (Sandbox Code Playgroud)