Gradle dependencies 解决项目依赖冲突

Posted CodingForAndroid

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gradle dependencies 解决项目依赖冲突相关的知识,希望对你有一定的参考价值。

1.查看版本号

$ gradle -v
  1. 编译打包
    检查依赖并编译打包
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 需要很长时间

记一次解决jar包版本问题解决

Gradle's dependency cache may be corrupt解决方法

Unable to resolve dependency for ':app@debug/compileClasspath' could not resolve com.android