远程仓库依赖

除了引用本地的依赖库,Gradle同样支持以aar的形式依赖远程服务器上的库项目。

远程仓库的配置

当利用Android Studio创建好一个默认的Android工程后,就会默认帮助开发者配置好远程仓库的引用方式,代码如下所示。

  1. // Top-level build file where you can add configuration options common to all sub-projects/modules.
  2.  
  3. buildscript {
  4. repositories {
  5. jcenter()
  6. }
  7. dependencies {
  8. classpath 'com.android.tools.build:gradle:2.0.0-alpha2'
  9.  
  10. // NOTE: Do not place your application dependencies here; they belong
  11. // in the individual module build.gradle files
  12. }
  13. }
  14.  
  15. allprojects {
  16. repositories {
  17. jcenter()
  18. }
  19. }

这都是默认生成的配置,笔者未做任何修改。在buildscript领域和allprojects领域中,通过repositories指定要引用的远程仓库。其中默认的jcenter()仓库是默认的远程仓库。你也可以继续指定其他远程仓库,例如mavenCentral()。当jcenter()仓库中找不到相应的库时,系统就会从mavenCentral()仓库中继续寻找,Gradle会根据依赖定义的顺序在各个库里寻找它们。

引用Maven中央库

当开发者将一个库项目上传到中央Maven库之后,可以通过compile的方式来引用这个远程库。引用方式与引用本地库基本类似,代码如下所示。

  1. compile 'com.jakewharton.scalpel:scalpel:1.1.2'

一般在Github上开源得比较好的库都会上传到中央库,同时作者也会给出相应的引用地址,开发者在Gradle脚本中指定一下路径即可。

中央库的地址为http://mvnrepository.com/。要使用中央库的依赖库,首先要知道如何找到想要的依赖库。在上面所示的地址中输入Gson,找到对应的版本并打开详细界面,如图4.31所示。

远程仓库依赖 - 图1 图4.31 Maven库

在最下面就可以找到具体的使用方式,切换到Gradle标签,即可找到引用方式。Maven和Gradle的引用方式如下所示。

  1. Maven
  2. <dependency>
  3. <groupId>com.google.code.gson</groupId>
  4. <artifactId>gson</artifactId>
  5. <version>2.5</version>
  6. </dependency>
  7.  
  8. Gradle
  9. 'com.google.code.gson:gson:2.5'

可以发现,实际上Gradle的引用方式与Maven是一样的。Gradle的引用规则为groupId:artifactId:version。

引用本地服务器中央库

中央库是开放开源的,但很多公司自己内部使用的库是不会放到中央库上的,因此很多公司采用搭建内部Maven库的方式来保存自己的库,即本地的Maven库。Gradle同样支持从本地的Maven库中拉取依赖库。

要引用自己搭建的Maven库,就需要对自动生成的脚本进行略微修改,代码如下所示。

  1. // Top-level build file where you can add configuration options common to all sub-projects/modules.
  2.  
  3. buildscript {
  4. repositories {
  5. // 优先使用本地库
  6. mavenLocal()
  7. // 远程私库
  8. maven {
  9. url nexusPublic
  10. }
  11. }
  12. dependencies {
  13. classpath 'com.android.tools.build:gradle:1.5.0'
  14.  
  15. // NOTE: Do not place your application dependencies here; they belong
  16. // in the individual module build.gradle files
  17. }
  18. }
  19.  
  20. allprojects {
  21. repositories {
  22. mavenLocal()
  23. maven {
  24. url "http://192.168.xx.xx:8081/nexus/content/groups/public/"
  25. }
  26. }
  27. }

将mavenCentral()、jcenter()修改为mavenLocal(),同时指定本地Maven库的地址,地址可以直接指定字符串,也可以通过变量的方式进行指定。

经过上面的设置后,就和使用中央库的方式一样了。