配置Gradle本地和远程仓库

Gradle本地配置

Gradle默认会将依赖下载到环境变量GRADLE_USER_HOME所指定的目录下。

Linux/macOS系统默认目录是$HOME/.gradle/

如果想让Gradle也使用maven仓库,即和maven共用本地库的话,需要添加以下脚本到build.gradle

1
2
3
repositories {
mavenLocal()
}

但是此方法只对当前项目有效,如果想对所有项目永久生效则需要在$HOME/.gradle/目录下新建
初始化脚本init.gradle:

1
2
3
4
5
allprojects {
repositories {
mavenLocal()
}
}

验证配置是否生效,添加以下脚本到build.gradle

1
2
3
4
task showRepos << {
println "All repos:"
println repositories.collect { it.name }
}

并运行,输出结果包含以下信息表示成功。

1
2
All repos:
[MavenLocal, MavenRepo]

Gradle远程代理配置

build.gradle文件默认配置的远程仓库在天朝下载比较慢,可以使用阿里云的Maven代理替换。
也是在初始化脚本init.gradle中添加配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
allprojects {
repositories {
// 整合合本地配置
mavenLocal()

def DEFAULT_MAVEN_LOCAL_REPO_NAME = "MavenLocal"
// 指定Gradle代理仓库,也可以使用读者自己的仓库地址替换
def ENTERPRISE_REPOSITORY_URL = "https://maven.aliyun.com/repository/public/"
// 指定Gradle插件代理仓库
def GRADLE_PLUGIN_URL = "https://maven.aliyun.com/repository/gradle-plugin"
// 移除所有未用阿里云Maven代理的远程库地址
all { ArtifactRepository repo ->
def url = repo.url.toString()
if (!(repo instanceof MavenArtifactRepository) || url != ENTERPRISE_REPOSITORY_URL
&& url != GRADLE_PLUGIN_URL && repo.name != DEFAULT_MAVEN_LOCAL_REPO_NAME) {
project.logger.lifecycle "Repository ${repo.url} removed. Used $ENTERPRISE_REPOSITORY_URL ."
remove repo
}
}
// 添加阿里云的公共Maven仓库代理,包含maven central仓库和jcenter仓库
maven {
name "Aliyun-Public-Repository"
url ENTERPRISE_REPOSITORY_URL
}
// 添加阿里云的Gradle插件仓库代理
maven {
name "Aliyun-Gradle-Plugin-Repository"
url GRADLE_PLUGIN_URL
}
}
}

验证配置是否生效,添加以下脚本到build.gradle

1
2
3
4
5
6
7
task showRepositories {
doLast {
repositories.each {
println "repository: ${it.name} ('${it.url}')"
}
}
}

并运行,输出结果包含以下信息表示成功。

1
2
3
4
> Task :showRepositories
repository: MavenLocal ('file:$MAVEN_REPOS/')
repository: Aliyun-Public-Repository ('https://maven.aliyun.com/repository/public/')
repository: Aliyun-Gradle-Plugin-Repository ('https://maven.aliyun.com/repository/gradle-plugin')

如果对您有所帮助,欢迎投食!
0%