Gradle仓库配置


原文链接: Gradle仓库配置

### 强制远程下载
gradle build --refresh-dependencies

强制使用缓存

gradle build --offline

maven { url 'http://maven.aliyun.com/mvn/repository/' }

buildscript {
    repositories {
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
        jcenter()
    }
}

Android Studio使用Gradle构建app。Gradle的使用非常灵活,其中可以设置使用多种类型的仓库,来获取应用中使用的库文件。
支持的类型有如下几种:

类型说明
Maven central
repository
这是Maven的中央仓库,无需配置,直接声明就可以使用。但不支持https协议访问
Maven JCenter
repository
JCenter中央仓库,实际也是是用的maven搭建的,但相比Maven仓库更友好,通过CDN分发,并且支持https访问。
Maven local
repository
Maven本地的仓库,可以通过本地配置文件进行配置
Maven
repository
常规的第三方Maven仓库,可设置访问Url
Ivy
repository
Ivy仓库,可以是本地仓库,也可以是远程仓库
Flat directory
repository
使用本地文件夹作为仓库

以下是几种仓库的使用方法:

Maven central repository

在build.gradle中配置

repositories {
    mavenCentral()
}

就可以直接使用了。

Maven JCenter repository

最常用也是Android Studio默认配置:

repositories {
    jcenter()
}

这时使用jcenter仓库是通过https访问的,如果想切换成http协议访问,需要修改配置:

repositories {
    jcenter {
        url "http://jcenter.bintray.com"
    }
}

Local Maven repository

可以使用Maven本地的仓库。默认情况下,本地仓库位于USER_HOME/.m2/repository(例如windows环境中,在C:\Users\NAME.m2.repository),同时可以通过USER_HOME/.m2/下的settings.xml配置文件修改默认路径位置。
若使用本地仓库在build.gradle中进行如下配置:

repositories {
    mavenLocal()
}

Maven repositories

第三方的配置也很简单,直接指明url即可:

repositories {
    maven {
        url "http://repo.mycompany.com/maven2"
    }
}

Ivy repository

配置如下:

repositories {
    ivy {
        url "http://repo.mycompany.com/repo"
    }
}

Flat directory repository

使用本地文件夹,这个也比较常用。直接在build.gradle中声明文件夹路径:

repositories {
    flatDir { dirs 'lib' }
    flatDir {
        dirs 'lib1', 'lib2'
    }
}

使用本地文件夹时,就不支持配置元数据格式的信息了(POM文件)。并且Gradle会优先使用服务器仓库中的库文件:例如同时声明了jcenter和flatDir,当flatDir中的库文件同样在jcenter中存在,gradle会优先使用jcenter的。

修改gradle缓存

一针见血的设置方法(本文采用)

在gradle的安装目录,编辑bin文件夹下的gradle文件,然后找到如下语句:

Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script

在这句话的下面加上如下这一句:

GRADLE_OPTS=-Dgradle.user.home=/yourpath/gradle/gradle_cache

即设置GRADLE_OPTS这个变量即可.这种修改方法尤其适合需要用gradle脚本就行编译的环境中,本文就采用这种方法
方法2,修改gradle.properties文件

在其中增加一句:
gradle.user.home=D:/Cache/.gradle
缺点:每个项目都要这么加一次.
方法3,设置GRADLE_USER_HOME环境变量

在/etc/profile或~/.bash_profile增加如下:
export GRADLE_USER_HOME=D:/Cache/.gradle
方法4,通过gradle自带参数

gradle -g D:/Cache/.gradle build build

可以通过gradle --help查看各参数的含义。
总结

个人推荐修改bin/gradle文件的方法 或 方法3.

缓存管理

缓存位置管理

  Gradle在按照配置的仓库去搜寻下载依赖时,下载的依赖默认会缓存到USER_HOME/.gradle/caches目录下,当然也可以手工修改这个位置。
  具体可以参考如下三种方式:

    通过添加系统变量 GRADLE_USER_HOME
    设置虚拟机参数 org.gradle.user.home属性
    通过命令行-g或者 --gradle-user-home 参数设置

离线模式(总是采用缓存内容)

  Gradle提供了一种离线模式,可以让你构建时总是采用缓存的内容而无需去联网检查,如果你并未采用动态版本特性且可以确保项目中依赖的版本都已经缓存到了本地,这无疑是提高构建速度的一个好选择。开启离线模式只需要在执行命令时候添加–offline参数即可。当然,采用这种模式的也是有代价的,如果缓存中搜寻不到所需依赖会导致构建失败。

gradle build --offline

`