Android Gradle 插件Gradle 依赖管理 ⑦ ( dependencies 传递依赖设置 | transitive 关闭依赖传递配置 | exclude 排除子依赖配置 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Gradle 插件Gradle 依赖管理 ⑦ ( dependencies 传递依赖设置 | transitive 关闭依赖传递配置 | exclude 排除子依赖配置 )相关的知识,希望对你有一定的参考价值。

文章目录

Android Plugin DSL Reference 参考文档 :





一、dependencies 依赖传递层级



在上一篇博客中 , 执行

gradlew :app:dependencies

命令 , 可以打印出依赖库以及依赖库的依赖库层级 ,

+--- com.facebook.fresco:fresco:0.14.0
|    +--- com.facebook.fresco:drawee:0.14.0
|    |    \\--- com.facebook.fresco:fbcore:0.14.0
|    +--- com.facebook.fresco:fbcore:0.14.0
|    \\--- com.facebook.fresco:imagepipeline:0.14.0
|         +--- com.parse.bolts:bolts-tasks:1.4.0
|         +--- com.facebook.fresco:fbcore:0.14.0
|         \\--- com.facebook.fresco:imagepipeline-base:0.14.0
|              +--- com.android.support:support-core-utils:24.2.1 -> 28.0.0 (*)
|              +--- com.parse.bolts:bolts-tasks:1.4.0
|              \\--- com.facebook.fresco:fbcore:0.14.0

默认情况下 , 在 build.gradle 中配置 com.facebook.fresco:fresco:0.14.0 依赖 ,

dependencies 
	implementation 'com.facebook.fresco:fresco:0.14.0'

会自动将其子依赖库 com.facebook.fresco:drawee:0.14.0 , com.facebook.fresco:fbcore:0.14.0 , com.facebook.fresco:imagepipeline:0.14.0 也会加载进来 ;





二、transitive 关闭依赖传递配置



如果我们不想要解析其子依赖 , 如在其它位置已经有了该依赖 , 则可以进行如下设置 :

dependencies 
	implementation 'com.facebook.fresco:fresco:0.14.0', 
		transitive false
	

在依赖后 , 增加一个闭包 , 使用逗号隔开 ,

在闭包中配置 transitive false 选项 , 即不解析该依赖的子依赖 ;


进行了上述设置后 , 调用 fresco 函数库肯定会出现问题 ;





三、exclude 排除子依赖配置



设置 exclude 属性 , 可以排除依赖库的某个子依赖 , 并且在外部进行依赖 , 可以有效解决依赖库冲突问题 ;

dependencies 
	implementation 'com.facebook.fresco:fresco:0.14.0', 
		transitive true
		// 排除 com.android.support:support-core-utils:24.2.1 子依赖库
		exclude(group:'com.android.support', module:'support-core-utils')
	
	// 外部单独添加被排除的 com.android.support:support-core-utils:24.2.1 依赖库
	implementation com.android.support:support-core-utils:24.2.1

以上是关于Android Gradle 插件Gradle 依赖管理 ⑦ ( dependencies 传递依赖设置 | transitive 关闭依赖传递配置 | exclude 排除子依赖配置 )的主要内容,如果未能解决你的问题,请参考以下文章

Android Gradle 插件Gradle 依赖管理 ① ( org.gradle.api.Project 配置 | Android Gradle 插件配置与 Gradle 配置关联 ) ★

Android Gradle 插件Gradle 构建机制 ⑤ ( 在 Android Studio 中查看 Android Gradle 插件源码 )

Android Gradle 插件Gradle 自定义 Plugin 插件 ② ( buildSrc 目录中实现 Gradle 插件 | 实现 Gradle 插件代码 | 模块引入插件并编译 )

Android Gradle 插件Android Module 模块 build.gradle 构建脚本 Groovy 语法分析 ① ( Gradle 二进制插件引入 | Gradle依赖配置 )

Android Gradle 插件Android Module 模块 build.gradle 构建脚本 Groovy 语法分析 ① ( Gradle 二进制插件引入 | Gradle依赖配置 )

Android Gradle 插件Gradle 自定义 Plugin 插件 ③ ( 自定义插件作用 | Android Gradle 插件的扩展 | 自定义 Extension 扩展 )