八.解决依赖冲突
一.解决冲突 二.修改gradle默认解决策略 configurations.all{
resolutionStrategy{
failOnVersionConflict()
}
}
3.排除传递性依赖(默认排除最低版本) //排除哪个jar的依赖
compile('org.spring-core:3.6.3.Final'){
//指定要排除的依赖的group和module=name,不指定版本,默认排除最低版本
exclude group:'org.slf4j',module:'slf4j-api'
//transitive=false//排除所有传递性依赖,比较少用
}
4.修改gradle的默认使用最高版本策略(强制指定默认使用某个版本) configurations.all{
resolutionStrategy{
force 'org.slf4j:slf4j-api:1.7.24'
}
}
三.例 dependencies {
//junit的依赖
testCompile group: 'junit',name: 'junit',version: '4.11'
//bibernate的依赖
compile 'org.hibernate:hibernate-core:3.6.3.Final'
//logback的依赖
compile 'ch.qos.logback:logback-classic:1.2.1'
}
2.在gradle的选项卡的:web-Source Sets-main-Dependencies的依赖中可以看到: org.hibernate:hibernate-core:3.6.3.Final 依赖了 org.slf4j:slf4j-api:1.7.22
ch.qos.logback:logback-classic:1.2.1 也依赖了 org.slf4j:slf4j-api:1.7.22
其实两个jar依赖的版本并不一定完全一样,但是gradle默认取最高版本的依赖,进行了最高版本的依赖统一 3.取消gradle的默认高版本统一依赖,在bulid.gradle中添加: //取消gradle默认统一使用高版本依赖的策略(gradle默认依赖冲突解决策略)
configurations.all{
resolutionStrategy{
failOnVersionConflict()
}
}
执行build,会看到报错信息: FAILURE: Build failed with an exception.
* What went wrong: Could not resolve all dependencies for configuration ':runtime'. > A conflict was found between the following modules: - org.slf4j:slf4j-api:1.6.1 - org.slf4j:slf4j-api:1.7.22 - org.slf4j:slf4j-api:1.5.8
4.排除传递性依赖,在build.gradle中添加: //排除传递性依赖
//添加依赖
dependencies {
//junit的依赖
testCompile group: 'junit',version: '4.11'
//hbernate的依赖
compile ('org.hibernate:hibernate-core:3.6.3.Final'){
//排斥hibernate对slf4j的依赖
exclude group:'org.slf4j',module:'slf4j-api'
}
//logback的依赖
compile ('ch.qos.logback:logback-classic:1.2.1')
}
执行bulid,编译成功 5.强制gradle默认统一使用某个版本依赖的策略(修改gradle默认依赖冲突解决策略)(可以是maven仓库的任何版本) //强制gradle默认统一使用某个版本依赖的策略(修改gradle默认依赖冲突解决策略)
configurations.all{
resolutionStrategy{
failOnVersionConflict()
force 'org.slf4j:slf4j-api:1.7.22'
}
}
强制不使用最新版,使用指定版 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |