【问题标题】:Gradle: Declaring dependency in top level and sub module- which is used?Gradle:在顶级和子模块中声明依赖关系-使用哪个?
【发布时间】:2016-04-15 22:46:33
【问题描述】:
当在顶层build.gradle和子模块build.gradle中声明不同的依赖versions时,哪个优先?
例如,如果在我的顶级 build.gradle 我有 junit:junit:4.8.2 但在子模块中有 junit:junit:4.10 ?
另外,在顶级 build.gradle 中声明依赖项有什么作用?是否应该在子模块中声明所有依赖项?
【问题讨论】:
标签:
java
android
gradle
dependencies
build.gradle
【解决方案1】:
有
// root build.gradle
subprojects {
dependencies {
compile "junit:junit:4.10"
}
}
和
// submodule build.gradle
dependencies {
compile "junit:junit:4.8.2"
}
本质上与拥有
相同
// submodule build.gradle
dependencies {
compile "junit:junit:4.8.2"
compile "junit:junit:4.10"
}
这意味着您在子模块中声明了两个版本的 junit。现在 Gradle 冲突解决方案在这里开始了。默认分辨率为
依赖冲突是选择较新的版本。所以 junit 4.10 将被选中。要更改此行为,您可以配置解析策略。