Gradle中配置内网仓库或者国内源加速下载
2017-08-02 本文已影响703人
act262
Android 项目中Gradle中默认使用jcenter
仓库,网络不好的时候神马速度与激情都没了。。。
下面是默认的build.gradle
配置,只有jcenter
,成败在此一举
// 这里配置的是gradle plugin依赖的东东,比如build tools
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.2'
}
}
// 这里配置的是具体项目依赖的东东,比如三方库
allprojects {
repositories {
jcenter()
}
}
改善生活质量的小技能
1. 在当前项目的gradle
配置中增加其他源,只对当前项目有效
// 阿里云 maven 服务,阿里云的maven服务应该算是比较靠谱的了吧
def MAVEN_ALIYUN = 'http://maven.aliyun.com/nexus/content/groups/public'
buildscript {
repositories {
jcenter()
maven {
url MAVEN_ALIYUN
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.2'
}
}
allprojects {
repositories {
jcenter()
maven {
url MAVEN_ALIYUN
}
}
}
阿里云的maven仓库中已经包含了jcenter
等几个常用的仓库,所以速度还是很有保障滴。
配置多个maven仓库时,优先级从上到下,也就是先从上面声明的仓库去找资源,找不到才往下找,常用的maven服务一般用 nexus
這样就能飞一般的加载一些依赖库了,但是不好的地方就是每个项目都要改动,还是不爽~
2. 使用gradle
全局配置(推荐)
在不改变原有项目代码的情况下,使用全局gradle初始化脚本配置来修改一些属性最合适不过了
将init.gradle
文件放到.gradle
目录下使用即可,不用跟随gradle版本不同而改动,如果是放到具体某个gradle版本的init.d
目录下则每个版本都要放一次。
*unix用户 :
~/.gradle
windows用户:C:\Users\XXUser\.gradle
init.gradle
具体内容如下,还可以做一些其他的功能
// 内网部署的 Maven
def NEXUS_SERVER = "http://nexus.company.com/content/groups/public"
def NEXUS_USERNAME = "username"
def NEXUS_PASSWORD = "password"
// 阿里云 maven 服务
def MAVEN_ALIYUN = 'http://maven.aliyun.com/nexus/content/groups/public'
allprojects {
buildscript {
repositories {
maven {
// 需要账号密码认证的maven服务
credentials {
username NEXUS_USERNAME
password NEXUS_PASSWORD
}
url NEXUS_SERVER
}
maven {
url MAVEN_ALIYUN
}
jcenter()
}
}
repositories {
maven {
credentials {
username NEXUS_USERNAME
password NEXUS_PASSWORD
}
url NEXUS_SERVER
}
maven {
url MAVEN_ALIYUN
}
jcenter()
}
}
还可以把jitpack
也放到这里来,这样就不用在要用到的项目中声明了
maven { url 'https://jitpack.io' }
3. 移除jcenter,用其他源替代,简单粗暴
allprojects{
repositories {
def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public'
all { ArtifactRepository repo ->
if(repo instanceof MavenArtifactRepository){
def url = repo.url.toString()
if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
remove repo
}
}
}
maven {
url REPOSITORY_URL
}
}
}
欢迎推荐其他稳定的源~
开源中国的maven服务已经废了
最后附上一个sample init.gradle
参考:
https://docs.gradle.org/current/userguide/init_scripts.html
Sonatype Nexus