目录
1. 概念
gradle的依赖管理就是,在项目需要引入类库时,只需要在gradle中声明,gradle就会自动从本地,远程自动引入该类库,如果类库之间有互相引用的情况,那么gradle会自动帮我们处理。
我们通常会通过dependencies来定义依赖的类库,repositories告诉构建从哪里去获取依赖,当配置好后,gradle会自动下载依赖,并存储在本地的缓存中,在构建中使用。
repositories {
mavenCentral()
}
dependencies {
compile 'org.jsoup:jsoup:1.9.2'
}
2. repositories
Gradle预定义了三个Maven仓库:
- Jcenter
- Maven Central
- 本地Maven仓库
repositories {
jcenter()
mavenCentral()
mavenLocal()
}
Maven Central 和JCenter是两个有名的远程仓库,一般不同时使用它们,通常推荐使用JCenter,它是Maven Central的超集,其也是Android Studio创建Android项目时的默认依赖仓库,而且JCenter还支持HTTPS。
本地Maven仓库是你已经使用了的所有依赖的本地缓存,你也可以自己添加依赖。默认情况下,依赖仓库可以在一个名为.m2目录文件夹的主目录中找到。
如果多个仓库有同一个依赖,那么会按照声明的顺序下载依赖(先到先得)。
repositories {
mavenLocal()
jcenter()
maven { url "https://jitpack.io" }
flatDir {
dirs 'libs'
}
}
除了使用上面三大仓库,我们还可以使用自定义maven仓库,lvy仓库,引入本地文件系统类库。
// 自定义maven仓库
repositories {
maven {
name 'Custom Maven Repository'
url 'http://repo.acmp.com/release/'
}
}
// lvy仓库
repositories {
ivy {
url 'http://repo.acmp.com/release/'
}
}
// 使用maven凭证
repositories {
maven {
url 'http://repo.acmp.com/release/'
credentials{
username 'user'
password 'secretPassword'
}
}
}
// 引入本地文件系统类库
repositories {
flatDir{
dirs 'flatlibs'
}
}
3. dependencies
一个依赖通常由三种元素定义的,可以称呼它们为依赖属性。
- group:通常标识一个组织、公司或者项目。如org.jsoup
- name:一个工件的名称唯一的描述了依赖。如::jsoup
- version:一个类库的版本号。如1.9.2
dependencies {
compile 'org.jsoup:jsoup:1.9.2'
}
如果是引入本地的依赖:
// 通过 files 方法添加jar文件作为依赖
dependencies{
compile files('libs/jsoup.jar')
}
// 通过 fileTree 方法批量引入
dependencies{
compile fileTree('libs')
}
// 只引入jar文件
dependencies{
compile fileTree(include: ['*.jar'], dir: 'libs')
}
// 如果想要使用C或C++编译的原生依赖库.so文件,需要指明jniLibs的目录。
android {
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
}
4. 单项目中的依赖管理
如果在项目中创建了一个模块作为依赖项目,那么需要在settings.gradle中添加该模块,然后在应用模块中使用它作为依赖。比如,在Android项目中,app模块是我们的主模块,library模块是依赖模块,也称作依赖库。
settings.gradle 中添加:
include ':app' ,' : library'
app模块下的build.gradle中添加:
dependencies{
compile project(':library')
}
添加aar文件作为依赖:
// 告知Gradle查找具有特定名称切扩展名为.aar的依赖库
compile(name: 'libraryname', ext: 'aar')