远程仓库依赖
除了引用本地的依赖库,Gradle同样支持以aar的形式依赖远程服务器上的库项目。
远程仓库的配置
当利用Android Studio创建好一个默认的Android工程后,就会默认帮助开发者配置好远程仓库的引用方式,代码如下所示。
- // Top-level build file where you can add configuration options common to all sub-projects/modules.
- buildscript {
- repositories {
- jcenter()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:2.0.0-alpha2'
- // NOTE: Do not place your application dependencies here; they belong
- // in the individual module build.gradle files
- }
- }
- allprojects {
- repositories {
- jcenter()
- }
- }
这都是默认生成的配置,笔者未做任何修改。在buildscript领域和allprojects领域中,通过repositories指定要引用的远程仓库。其中默认的jcenter()仓库是默认的远程仓库。你也可以继续指定其他远程仓库,例如mavenCentral()。当jcenter()仓库中找不到相应的库时,系统就会从mavenCentral()仓库中继续寻找,Gradle会根据依赖定义的顺序在各个库里寻找它们。
引用Maven中央库
当开发者将一个库项目上传到中央Maven库之后,可以通过compile的方式来引用这个远程库。引用方式与引用本地库基本类似,代码如下所示。
- compile 'com.jakewharton.scalpel:scalpel:1.1.2'
一般在Github上开源得比较好的库都会上传到中央库,同时作者也会给出相应的引用地址,开发者在Gradle脚本中指定一下路径即可。
中央库的地址为http://mvnrepository.com/。要使用中央库的依赖库,首先要知道如何找到想要的依赖库。在上面所示的地址中输入Gson,找到对应的版本并打开详细界面,如图4.31所示。
图4.31 Maven库
在最下面就可以找到具体的使用方式,切换到Gradle标签,即可找到引用方式。Maven和Gradle的引用方式如下所示。
- Maven:
- <dependency>
- <groupId>com.google.code.gson</groupId>
- <artifactId>gson</artifactId>
- <version>2.5</version>
- </dependency>
- Gradle:
- 'com.google.code.gson:gson:2.5'
可以发现,实际上Gradle的引用方式与Maven是一样的。Gradle的引用规则为groupId:artifactId:version。
引用本地服务器中央库
中央库是开放开源的,但很多公司自己内部使用的库是不会放到中央库上的,因此很多公司采用搭建内部Maven库的方式来保存自己的库,即本地的Maven库。Gradle同样支持从本地的Maven库中拉取依赖库。
要引用自己搭建的Maven库,就需要对自动生成的脚本进行略微修改,代码如下所示。
- // Top-level build file where you can add configuration options common to all sub-projects/modules.
- buildscript {
- repositories {
- // 优先使用本地库
- mavenLocal()
- // 远程私库
- maven {
- url nexusPublic
- }
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:1.5.0'
- // NOTE: Do not place your application dependencies here; they belong
- // in the individual module build.gradle files
- }
- }
- allprojects {
- repositories {
- mavenLocal()
- maven {
- url "http://192.168.xx.xx:8081/nexus/content/groups/public/"
- }
- }
- }
将mavenCentral()、jcenter()修改为mavenLocal(),同时指定本地Maven库的地址,地址可以直接指定字符串,也可以通过变量的方式进行指定。
经过上面的设置后,就和使用中央库的方式一样了。
