目录
Supported metadata sources 支持的元数据来源
Supported repository transport protocols 支持的仓库传输协议
依赖管理介绍
-
什么是依赖管理
软件项目很少是独立工作的,一个项目通常依赖软件库的可复用功能,或者被分成一个个单独的组件来组成一个系统。依赖管理是一种技术,为了以一种自动化的方式声明、解决和使用项目要求的依赖。
-
Gradle的依赖管理
Gradle已经构建支持依赖管理,并创建了用来解决现代项目中遇到的典型问题的任务。下图是Gradle依赖管理的粗略概述图:
-
依赖解决方案是如何工作的
Gradle得到你的依赖声明和仓库定义后,会尝试通过一个叫做依赖解决方案的进程下载你的所有依赖。下面是这个进程如何工作的粗略大纲:
- 对于一个要求的依赖,Gradle会尝试查找此依赖指向的模块。每个仓库按顺序被检查。依靠仓库类型,Gradle查找用来描述此模块的元数据文件(.module,.pom或ivy.xml文件),或者直接查找人工制品文件(比如.jar文件)。
如果此依赖被声明的是一个动态版本(比如1.+
, [1.0,)
, [1.0, 2.0)
),Gradle会在此仓库中选择一个最高的具体版本 (比如:1.2)。
如果此模块的元数据是一个有父POM声明的POM文件,Gradle会尝试为此POM解决每一个父模块。
- 一旦某个仓库被检查到此模块,Gradle会选择最好的一个来使用。
对于一个 动态版本,一个具体的高版本优先于低版本。
通过模块元数据文件声明的模块优先于只有一个人工制品的模块。
早的仓库中的模块优先于晚的仓库中的模块。
当依赖被声明的是具体的版本,且在仓库中找到了模块元数据文件,就不需要在后面的仓库中继续查找了。
- 然后从上面选择的相同仓库中,请求此模块的所有人工制品。
Dependency Types 依赖类型
-
Module dependencies 模块依赖
-
模块依赖是最常用的依赖方式,可以引用一个仓库中的一个模块。
-
implementation group: 'com.tencent.bugly', name: 'crashreport', version: '2.6.6'
-
implementation 'com.tencent.bugly:crashreport:2.6.6'
-
implementation ('com.tencent.bugly:crashreport:2.6.6') { force = true }
-
File dependencies 文件依赖
-
文件依赖允许你直接添加一个文件集合到配置中,不用添加它们到仓库中。
-
implementation fileTree(dir: "libs", include: ["*.jar","*.aar"])
-
implementation fileTree(dir: "libs", include: ["*.jar"])
-
implementation files('libs/umeng-common-1.4.4.jar')
-
implementation files('libs/a.jar', 'libs/b.jar')
-
implementation (name: 'xiaomi-market-sdk2.8', ext: 'aar')
-
Project dependencies 项目依赖
-
项目依赖类型主要用于多项目构建。
-
implementation project(':PushSDK')
-
Gradle distribution-specific dependencies 特定分发依赖