方案一、去掉全部依赖
// 依据构建名称排除
exclude module: 'cglib'
// 依据组织名称排除
exclude group: 'org.jmock'
// 依据组织名称+构件名称排除
exclude group: 'org.unwanted', module: 'iAmBuggy'
eg:
去除support-v4 包的依赖(去掉全部)
configurations {
all*.exclude group: 'com.android.support', module: 'support-v4'
}
方案二、去掉部分冲突
例如去除 com.github.niorgai:StatusBarCompat:2.1.3 引用的 com.android.support 包下内容
compile('com.github.niorgai:StatusBarCompat:2.1.3', {
exclude group: 'com.android.support'
})
去除 module 引用的 'com.google.code.findbugs:jsr305' 的相关内容
compile(project(':downlibrary')) {
exclude group: 'com.google.code.findbugs', module: 'jsr305'
}
configurations {
//编译期排除commons模块
compile.exclude module: 'commons'
//在整个构建过程中排除pkaq.tiger:share
all*.exclude group: 'pkaq.tiger', module: 'share'
}
方案三、强制依赖某个版本 包依赖冲突的时候
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '26.1.0'
}
}
}
}
方案四、使用强制版本
当然,有时候你可能仅仅是需要强制使用某个统一的依赖版本,而不是排除他们,那么此时force就该登场了。指定force = true属性可以冲突时优先使用该版本进行解决。
compile('org.hibernate:hibernate:3.1') {
force = true
}
全局配置强制使用某个版本的依赖来解决依赖冲突中出现的依赖
configurations.all {
resolutionStrategy {
force 'org.hamcrest:hamcrest-core:1.3'
}
}
网友评论