Gradle dependencies 解决项目依赖冲突
Posted CodingForAndroid
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gradle dependencies 解决项目依赖冲突相关的知识,希望对你有一定的参考价值。
1.查看版本号
$ gradle -v
- 编译打包
检查依赖并编译打包
gradle build
编译跳过测试
gradle build -x test
编译打包tgz包,跳过测试类
gradle releaseTarGz -x signArchives -x test
这里注意的是 gradle build 命令把debug、release环境的包都打出来,如果正式发布只需要打Release的包,该怎么办呢,下面介绍一个很有用的命令 assemble, 如
gradle assembleDebug 编译并打Debug包
gradle assembleRelease 编译并打Release的包
3.清理
gradle clean 清除9GAG/app目录下的build文件夹
4.Gradle dependencies 解决项目依赖冲突
当我们的项目依赖存在冲突时,如何排查jar冲突呢?
在控制台输入:gradle dependencies --configuration default
查看当前项目jar依赖树;
查看子模块dependencies 依赖树:gradle dependencies mymodel:dependencies --configuration default
;将mymodel 替换成自己的项目名称,查看子模块依赖结果树,进行冲突排查;查看到冲突之后我们如何处理呢?
dependencies
implementation(group: 'com.alibaba', name: 'dubbo', version: '2.6.5')
//当项目有多个dubbo包依赖时,我们可以在父项目强制统一版本号为2.6.5:
force = true
//排除包所有的spring-core 模块
exclude module: 'spring-core'
//排除指定的单个模块,排除springframework中的spring-beans
exclude group: 'org.springframework',module:'spring-beans'
//排除springframework整个包
exclude group: 'org.springframework'
//禁止传递依赖,dubbo依赖的其他包都不能传递依赖
transitive = false
testCompile group: 'junit', name: 'junit', version: '4.12'
gradle dependencies
当你运行 dependencies 任务时,这个依赖树会打印出来,依赖树显示了你 build 脚本声明的顶级依赖和它们的传递依赖:
粘一段我运行时的依赖树:
+--- com.alibaba:fastjson:1.1.43 -> 1.2.7
| +--- io.netty:netty:3.9.2.Final
| +--- com.dianping.cat:cat-client:1.5.4 (*)
| +--- org.unidal.framework:foundation-service:2.7.0 (*)
| +--- org.codehaus.plexus:plexus-container-default:1.6 (*)
| +--- org.codehaus.plexus:plexus-classworlds:2.5.1
| +--- org.apache.xbean:xbean-reflect:3.7
| +--- org.codehaus.plexus:plexus-utils:3.0.20
| +--- junit:junit:4.11 (*)
| +--- org.hamcrest:hamcrest-core:1.3
| +--- io.netty:netty-all:4.0.24.Final
| +--- com.dianping.lion:lion-client:0.6.7 (*)
| +--- org.apache.curator:curator-recipes:2.7.1 (*)
| +--- org.freemarker:freemarker:2.3.22
| +--- com.facebook.swift:swift-annotations:0.16.0-mt-20151221.124547-1
| +--- com.facebook.swift:swift-codec:0.16.0-mt-20151218.091258-4 (*)
| +--- com.thoughtworks.paranamer:paranamer:2.5.2
| +--- com.google.code.findbugs:annotations:2.0.3
| +--- com.facebook.swift:swift-generator:0.16.0-mt-20151222.050944-1 (*)
| +--- com.facebook.swift:swift-idl-parser:0.16.0-mt-20151222.051729-1 (*)
| +--- org.antlr:antlr-runtime:3.5 (*)
| +--- org.antlr:stringtemplate:4.0.2 (*)
| +--- org.apache.thrift:libthrift:0.8.0 (*)
| +--- org.apache.httpcomponents:httpclient:4.1.2 -> 4.3.6 (*)
| +--- org.apache.httpcomponents:httpcore:4.1.3 -> 4.3.3
| \\--- org.xerial.snappy:snappy-java:1.1.1.6
+--- com.dianping.lion:lion-client:0.5.4 -> 0.6.7 (*)
+--- com.dianping.cat:cat-client:1.4.4 -> 1.5.4 (*)
+--- com.dianping:avatar-tracker:2.2.5
+--- com.dianping.mp:mpi-provider-remote:1.0.0
+--- com.meituan.log:scribe-log4j2:1.2.6
| +--- org.apache.logging.log4j:log4j-api:2.3 -> 2.5
| +--- org.apache.logging.log4j:log4j-core:2.3 -> 2.5 (*)
| +--- org.apache.thrift:libthrift:0.8.0 (*)
| +--- org.apache.thrift:libfb303:0.8.0 (*)
| +--- com.meituan.inf:xmd-common-log4j2:1.1.1-SNAPSHOT
| | +--- org.slf4j:slf4j-api:1.7.2 -> 1.7.13
| | +--- org.apache.logging.log4j:log4j-slf4j-impl:2.3 -> 2.5 (*)
| | +--- org.apache.logging.log4j:log4j-api:2.3 -> 2.5
| | +--- org.apache.logging.log4j:log4j-core:2.3 -> 2.5 (*)
| | +--- org.apache.logging.log4j:log4j-1.2-api:2.3 (*)
| | \\--- com.meituan.mtrace:mtrace:1.1.1 (*)
| +--- com.fasterxml.jackson.core:jackson-core:2.8.0
| +--- com.fasterxml.jackson.core:jackson-databind:2.8.0 (*)
| \\--- com.fasterxml.jackson.core:jackson-annotations:2.8.0
+--- com.sankuai.meituan.zcm.pos.officialacounts:zcm-pos-officialacounts:1.0.3-SNAPSHOT
| +--- com.meituan.service.mobile:mtthrift:1.6.4 (*)
| \\--- javax.validation:validation-api:1.0.0.GA
+--- com.sankuai.meituan.zcm.pos.marketing:zcm-pos-marketing-client:1.0.4-SNAPSHOT
| +--- com.meituan.service.mobile:mtthrift:1.6.4 (*)
| \\--- javax.validation:validation-api:1.0.0.GA
+--- junit:junit:4.11 (*)
+--- org.springframework.javaconfig:spring-javaconfig:1.0.0.m3
| +--- org.springframework:spring-core:2.5 -> 4.2.3.RELEASE (*)
| +--- org.springframework:spring-beans:2.5 -> 4.2.3.RELEASE (*)
| +--- org.springframework:spring-context:2.5 -> 4.2.3.RELEASE (*)
仔细观察你会发现有些传递依赖标注了*号,表示这个依赖被忽略了,这是因为其他顶级依赖中也依赖了这个传递的依赖,Gradle 会自动分析下载最合适的依赖。
如果你也热衷技术欢迎加群一起进步:230274309 。 一起分享,一起进步!少划水,多晒干货!!欢迎大家!!!(进群潜水者勿加) |
点击链接加入群聊【编程之美】:https://jq.qq.com/?_wv=1027&k=h75BfFCg
+++++++++++++++++++++++
或者扫码
+++++++++++++++++++++++
以上是关于Gradle dependencies 解决项目依赖冲突的主要内容,如果未能解决你的问题,请参考以下文章
gradle dependencies 查找jar导入OR解决jar冲突
Android Studio 出现 Gradle's dependency cache may be corrupt 解决方案
Flutter 初始化 gradle 和 Resolving dependencies 需要很长时间
Gradle's dependency cache may be corrupt解决方法
Unable to resolve dependency for ':app@debug/compileClasspath' could not resolve com.android