Gradle 全局配置使用

一、原理

Gradle 查找依赖时会按仓库声明顺序依次搜索 ,把本地仓库(mavenLocal())放在所有远程仓库前面,即可实现优先使用本地依赖,本地不存在时才从远程下载。

二、配置全局初始化文件(关键步骤)

全局配置文件对所有 Gradle 项目生效,无需逐个项目修改。

1. 定位 / 创建全局配置文件

Gradle 全局初始化文件路径:

  • WindowsC:\Users\<用户名>\.gradle\init.gradle(或init.gradle.kts
  • Linux/macOS~/.gradle/init.gradle(或init.gradle.kts

如果文件不存在,直接手动创建(无后缀,文件名固定为init.gradle)。

2. 编写全局仓库配置

以下提供两种常用 DSL 写法,任选其一:

写法 1:Groovy DSL(init.gradle
groovy 复制代码
 // Gradle 全局初始化配置文件
// 路径:Windows(C:\Users\<用户名>\.gradle\init.gradle) / Linux/macOS(~/.gradle/init.gradle)
// 作用:全局优先使用本地Maven仓库,搭配国内镜像加速远程依赖下载

// 1. 全局项目仓库配置(所有项目生效)
allprojects {
    repositories {
        // ==================== 核心:优先使用本地Maven仓库 ====================
        mavenLocal {
            // 替换下方路径为你的本地Maven仓库实际路径(删除注释后生效)
            //url = uri('D:/maven-repository')  // Windows 配置
            //url = uri('/Users/yourname/Documents/maven-repo') // macOS/Linux示例
            // 若使用默认路径(~/.m2/repository),可删除上面的url配置行
        }

        // ==================== 国内镜像仓库(加速远程下载) ====================
        // 阿里云中央仓库
        maven { url 'https://maven.aliyun.com/repository/public' }
        // 阿里云Google仓库(适配Android/Compose)
        maven { url 'https://maven.aliyun.com/repository/google' }
        // 阿里云Gradle插件仓库
        maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
        // 阿里云Spring仓库(如需Spring相关依赖)
        maven { url 'https://maven.aliyun.com/repository/spring' }
        // 阿里云Spring插件仓库
        maven { url 'https://maven.aliyun.com/repository/spring-plugin' }

        // ==================== 官方仓库(兜底) ====================
        google()              // Android/Compose官方仓库
        mavenCentral()        // 中央仓库
        gradlePluginPortal()  // Gradle插件仓库
        maven { url 'https://jitpack.io' } // 第三方开源库仓库(可选)
    }

    // 可选:依赖下载超时配置(解决网络慢导致的下载失败)
    configurations.all {
        resolutionStrategy {
            cacheDynamicVersionsFor 10, 'minutes'
            cacheChangingModulesFor 10, 'minutes'
        }
        // 超时时间设置
        setTimeout(300) // 单位:秒
    }
}

// 2. Gradle插件仓库配置(影响插件下载顺序)
settingsEvaluated { settings ->
    settings.pluginManagement {
        repositories {
            // 插件优先从本地仓库查找
            mavenLocal {
                // 同上面的本地仓库路径,如需自定义则取消注释并修改
                // url = uri('D:/maven-repository')  //Windows示例
                // url = uri('/Users/yourname/Documents/maven-repo') // macOS/Linux示例
            }
            // 插件镜像仓库
            maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
            // 官方插件仓库兜底
            gradlePluginPortal()
            google()
            mavenCentral()
        }
    }
}

// 3. 可选:构建优化配置
gradle.projectsLoaded {
    rootProject.allprojects {
        buildDir = "${rootProject.rootDir}/.gradle-build/${project.name}"
    }
}

// 4. 可选:打印依赖查找日志(验证本地仓库是否生效)
gradle.addBuildListener(new BuildListener() {
    @Override
    void buildStarted(Gradle gradle) {
        println "===== Gradle 构建开始:优先使用本地仓库 ====="
    }

    @Override
    void settingsEvaluated(Settings settings) {}

    @Override
    void projectsLoaded(Gradle gradle) {}

    @Override
    void projectsEvaluated(Gradle gradle) {}

    @Override
    void buildFinished(BuildResult result) {
        println "===== Gradle 构建结束:本地仓库优先配置已生效 ====="
    }
})
写法 2:Kotlin DSL(init.gradle.kts
kotlin 复制代码
 // Gradle 全局初始化配置文件(Kotlin DSL)
// 路径:Windows(C:\Users\<用户名>\.gradle\init.gradle.kts) / Linux/macOS(~/.gradle/init.gradle.kts)
// 作用:全局优先使用本地Maven仓库,搭配阿里云镜像加速远程依赖下载

// 1. 全局项目仓库配置(所有Gradle项目生效)
allprojects {
    repositories {
        // ==================== 核心:优先使用本地Maven仓库 ====================
        mavenLocal {
            // 替换下方路径为你的本地Maven仓库实际路径(删除注释后生效)
            // url = uri("D:/maven-repository") // Windows示例
            // url = uri("/Users/yourname/.m2/repository") // macOS/Linux示例
            // 若使用默认路径(~/.m2/repository),直接注释掉url配置行即可
        }

        // ==================== 国内镜像仓库(加速远程下载) ====================
        // 阿里云中央仓库(适配Java/Kotlin基础依赖)
        maven("https://maven.aliyun.com/repository/public")
        // 阿里云Google仓库(适配Android/Compose核心依赖)
        maven("https://maven.aliyun.com/repository/google")
        // 阿里云Gradle插件仓库(适配Android Gradle插件)
        maven("https://maven.aliyun.com/repository/gradle-plugin")
        // 阿里云Spring仓库(如需Spring相关依赖,可选)
        maven("https://maven.aliyun.com/repository/spring")
        // 阿里云Spring插件仓库(可选)
        maven("https://maven.aliyun.com/repository/spring-plugin")
        // JitPack(第三方开源库,如GitHub依赖,可选)
        maven("https://jitpack.io")

        // ==================== 官方仓库(兜底,不可删除) ====================
        google()              // Android/Compose官方核心仓库
        mavenCentral()        // Maven中央仓库
        gradlePluginPortal()  // Gradle插件官方仓库
    }

    // 可选:依赖下载超时&缓存优化(解决Android依赖下载慢/失败)
    configurations.all {
        resolutionStrategy {
            // 动态版本缓存时间
            cacheDynamicVersionsFor(10, "minutes")
            // 快照版本缓存时间
            cacheChangingModulesFor(10, "minutes")
        }
        // 依赖下载超时时间(单位:秒)
        setTimeout(300)
    }
}

// 2. Gradle插件仓库配置(影响Android Gradle插件、自定义插件的下载顺序)
settingsEvaluated {
    pluginManagement {
        repositories {
            // 插件优先从本地仓库查找
            mavenLocal {
                // 同上面的本地仓库路径,如需自定义则取消注释并修改
                // url = uri("D:/maven-repository") //Windows示例
                // url = uri("/Users/yourname/.m2/repository") // macOS/Linux示例
            }
            // 插件镜像仓库
            maven("https://maven.aliyun.com/repository/gradle-plugin")
            // 官方插件仓库兜底
            gradlePluginPortal()
            google()
            mavenCentral()
        }
    }
}

// 3. 可选:Android项目构建目录优化(避免模块间构建目录分散)
gradle.projectsLoaded {
    rootProject.allprojects {
        buildDir = file("${rootProject.rootDir}/.gradle-build/${project.name}")
    }
}

// 4. 可选:打印构建日志(验证本地仓库配置是否生效)
gradle.addBuildListener(object : BuildListener {
    override fun buildStarted(gradle: Gradle) {
        println("===== Gradle 构建开始:优先使用本地仓库(Kotlin DSL配置) =====")
    }

    override fun settingsEvaluated(settings: Settings) {}
    override fun projectsLoaded(gradle: Gradle) {}
    override fun projectsEvaluated(gradle: Gradle) {}
    override fun buildFinished(result: BuildResult) {
        val status = if (result.failure == null) "成功" else "失败"
        println("===== Gradle 构建结束:本地仓库优先配置已生效(构建${status}) =====")
    }
})
相关推荐
程序员老刘·1 天前
Android Studio Otter 3 发布:日常开发选AS还是Cursor?
flutter·android studio·ai编程·跨平台开发·客户端开发
JMchen1233 天前
AR Core与CameraX的融合:测量应用从原理到实现
android·经验分享·程序人生·ar·移动开发·android studio·camerax
JMchen1233 天前
Android相机硬件抽象层(HAL)逆向工程:定制ROM的相机优化深度指南
android·开发语言·c++·python·数码相机·移动开发·android studio
我命由我123454 天前
Android 开发问题:Duplicate class android.support.v4.app.INotificationSideChannel...
android·java·开发语言·java-ee·android studio·android-studio·android runtime
风流倜傥唐伯虎6 天前
./gradlew assembleDebug和gradle build区别
android·android studio
我命由我123456 天前
Android 开发 Room 数据库升级问题:A migration from 6 to 7 was required but not found.
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
JMchen1236 天前
现代Android图像处理管道:从CameraX到OpenGL的60fps实时滤镜架构
android·图像处理·架构·kotlin·android studio·opengl·camerax
jian110586 天前
Android studio 调试flutter 运行自己的苹果手机上
flutter·智能手机·android studio
jian110586 天前
Android studio配置flutter,mac Android studio 发现苹果手机设备
android·flutter·android studio
henysugar7 天前
Android studio编译aidl若干问题记录
android·ide·android studio·aidl