版本冲突
Gradle提供了两种解决版本冲突的策略:Newest和Fail.默认策略是Newest,配置Fail模式:
configurations.all {
resolutionStrategy.failOnVersionConflict()
}
这两种策略一般能够满足使用,但Gradle提供了颗粒度更细的控制:
强制依赖
configurations.all { //如果有冲突,强制依赖asm-all的3.31版本和commons-io的1.4版本 resolutionStrategy.force 'asm:asm-all:3.3.1', 'commons-io:commons-io:1.4' }
排除传递中的依赖
dependencies { compile('org.hibernate:hibernate:3.1') { //如果有冲突,强制使用3.1版本 force = true
//排除传递中的依赖 exclude module: 'cglib' //通过artifact的名字排除 exclude group: 'org.jmock' //通过artifact的group名字排除 exclude group: 'org.unwanted', module: 'iAmBuggy' //通过artifact的名字和grop名字排除
//禁止该依赖传递 transitive = false } }
自定义模块优先
有时自己fork了别人的模块,做了修改,此时希望Gradle依赖自己的fork而不是官方的,这是就可以
configurations.all {
resolutionStrategy.preferProjectModules()
}
版本冲突排查
使用命令行”gradle dependencies xxx”可以查看项目的依赖