Skip to content

仓库配置

仓库(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")
    }
}

下一步