Appearance
仓库配置
仓库(Repository)是存放依赖的地方,Gradle 按照声明顺序依次查找依赖。
常用仓库
kotlin
repositories {
// Maven Central(最主要的公共仓库)
mavenCentral()
// Google Maven(Android 库)
google()
// Gradle 插件门户
gradlePluginPortal()
// JCenter(已废弃,不建议使用)
// jcenter()
// 本地 Maven 仓库(~/.m2/repository)
mavenLocal()
// 自定义 Maven 仓库
maven {
url = uri("https://repo.example.com/maven")
}
// 带认证的私有仓库
maven {
url = uri("https://private.example.com/maven")
credentials {
username = providers.gradleProperty("mavenUsername").orNull
password = providers.gradleProperty("mavenPassword").orNull
}
}
// Ivy 仓库
ivy {
url = uri("https://ivy.example.com")
layout("pattern") {
artifact("[organisation]/[module]/[revision]/[artifact]-[revision].[ext]")
}
}
}国内镜像加速
配置阿里云镜像,大幅提升依赖下载速度:
kotlin
// build.gradle.kts(单项目)
repositories {
maven { url = uri("https://maven.aliyun.com/repository/public") }
maven { url = uri("https://maven.aliyun.com/repository/google") }
mavenCentral()
}全局配置(推荐,不需要每个项目单独配置):
groovy
// ~/.gradle/init.gradle
allprojects {
repositories {
def ALIYUN_URL = 'https://maven.aliyun.com/repository/public'
all { ArtifactRepository repo ->
if (repo instanceof MavenArtifactRepository &&
repo.url.toString().startsWith('https://repo1.maven.org/maven2')) {
remove repo
}
}
maven { url ALIYUN_URL }
mavenCentral()
}
}统一仓库配置(推荐,settings.gradle.kts)
Gradle 7+ 推荐在 settings.gradle.kts 中统一配置仓库:
kotlin
// settings.gradle.kts
dependencyResolutionManagement {
// FAIL_ON_PROJECT_REPOS:子项目不能自己声明仓库(推荐,统一管理)
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
maven { url = uri("https://maven.aliyun.com/repository/public") }
mavenCentral()
google()
}
}插件仓库配置
kotlin
// settings.gradle.kts
pluginManagement {
repositories {
gradlePluginPortal()
mavenCentral()
// 自定义插件仓库
maven { url = uri("https://plugins.example.com") }
}
}仓库过滤(内容过滤)
限制某个仓库只能用于特定依赖,避免敏感信息泄露:
kotlin
repositories {
// 私有仓库只用于公司内部库
maven {
url = uri("https://private.example.com/maven")
content {
includeGroup("com.example")
includeGroupByRegex("com\\.example\\..*")
}
}
// Maven Central 用于其他所有库
mavenCentral {
content {
excludeGroup("com.example")
}
}
}本地文件系统仓库
kotlin
repositories {
// 本地 Maven 格式仓库
maven {
url = uri("file://${rootProject.projectDir}/local-repo")
}
// 平铺目录(含 JAR 文件)
flatDir {
dirs("libs")
}
}