Transitive
gradle的依赖管理默认具有传递性,A依赖B,B依赖C,则A依赖C。
也可以将这项配置关闭,这样A所依赖的B和C需要手动添加。
1 | //整个项目取消依赖传递 |
依赖冲突
如果D也依赖C,而且B依赖的C的版本为1.0,D依赖的C的版本为2.0
gradle会如何选择?
默认选择最新版本,不会报错。所以在默认配置下,依赖会生产冲突。
依赖冲突的解决方法应该是定制化的。
Force
强制设置某个版本
1
2
3
4
5
6
7
8
9
10
11
12//整个项目统一使用某个版本
configurations.all {
resolutionStrategy {
force 'group:c:1.0'
}
}
//特定依赖使用某个版本
dependencies {
compile ('group:B:version') {
force 'group:C:1.0'
}
}
exclude
去除某个依赖,其实就会使用没有去处的依赖的版本,也可以使依赖一致。
1 | dependencies { |