Gradle的介绍及换源

50 阅读3分钟

1. gradle简介

Gradle 和 Maven 都是 Java 生态中主流的项目构建工具,但它们在设计理念、性能和灵活性上有显著区别。以下是它们的核心对比: 在这里插入图片描述

2. gradle的工作机制

为什么每次idea创建gradle项目的时候,都会下载gradle

  • Gradle 的核心理念是每个项目独立配置,包括 Gradle 版本。即使你本地已安装过其他版本的 Gradle,新项目也可能指定了不同的版本(通过 gradle-wrapper.properties 文件中的 distributionUrl 定义)。

  • 这种设计避免了全局版本冲突,确保项目构建的可靠性。

gradle wrapper的作用

  • 创建项目时,IDEA 默认会生成或使用项目中的 Gradle Wrapper(即 gradlew 或 gradlew.bat 脚本 + gradle-wrapper.properties 文件)。

  • Wrapper 的作用是自动下载并管理指定版本的 Gradle,无需用户手动安装。这是 Gradle 官方推荐的实践,目的是保证所有协作者和构建环境的一致性。

  • 首次运行时会根据配置下载对应版本的 Gradle 到本地缓存(通常位于 ~/.gradle/wrapper/dists/)。

思考:是否应该将gradle-wrapper.jar提交的git远程仓库

答案:

✅ 应该提交 gradle-wrapper.jar 以及相关的 gradle-wrapper.properties 文件到 Git 仓库。原因如下:

  • 一致性 Gradle Wrapper 的目的是确保所有开发者、CI 环境使用相同版本的 Gradle,避免因本地 Gradle 版本不同导致构建问题。提交 gradle-wrapper.jar 能保证所有人使用完全相同的 Wrapper 逻辑。

  • 零配置构建 新克隆仓库的用户可以直接运行 ./gradlew(或 gradlew.bat)而无需手动安装 Gradle,降低入门门槛。

  • 历史记录 如果未来需要回退到旧版本 Gradle,仓库中的历史记录能确保 Wrapper 的兼容性。

3. 新项目需要下载gradle的时候,加速下载

  1. 使用国内镜像地址替换 distributionUrl 修改项目中的 gradle-wrapper.properties 文件,将默认的distributionUrl替换为国内镜像站(如腾讯云、阿里云等)。例如:
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.4-bin.zip
distributionUrl=https\://mirrors.aliyun.com/gradle/gradle-8.4-bin.zip

4. 配置gradle 阿里源

  1. 创建或修改全局初始化文件: 路径:~/.gradle/init.gradle(Windows:%USERPROFILE%\.gradle\init.gradle

  2. 编辑 init.gradle 文件,新增如下内容

    // 配置所有项目的依赖仓库
    allprojects {
        repositories {
            mavenLocal()
            // 阿里云镜像(优先使用)
            maven {
                url 'https://maven.aliyun.com/repository/public/'
                allowInsecureProtocol = true // Gradle 7.0+ 需要显式声明
            }
            maven {
                url 'https://maven.aliyun.com/repository/central'
                allowInsecureProtocol = true
            }
            maven {
                url 'https://maven.aliyun.com/repository/google/'
                allowInsecureProtocol = true
            }
            // 必须保留的分号(如果后面有其他表达式)
            ;
            // 保留官方仓库(备用)
            mavenCentral()
            google()
        }
    }
    
    settingsEvaluated { settings ->
        settings.pluginManagement {
            repositories {
                maven { 
                    url 'https://maven.aliyun.com/repository/gradle-plugin/'
                    allowInsecureProtocol = true
                }
                // 显式添加分号分隔
                ;
                // Gradle官方插件仓库
                gradlePluginPortal()
            }
        }
    }
    

阿里云仓库地址来源: developer.aliyun.com/mvn/view

5. gradle 缓存目录

这部分内容参考博客:blog.csdn.net/feinifi/art…

gradle可以指定本地maven本地仓库

allprojects {
    repositories {
        // 本地仓库,地址是maven本地仓库地址
        mavenLocal()
    }
}

但是,如果本次仓库没有,gradle会从指定的远程仓去下载,但是下载下来的 jar 包并不是存储在 maven 本地仓库中,而是存放在了自己的缓存目录中(默认地址:~/.gradle/caches/modules-2/file-2.1/ )