沉梦手记 沉梦手记
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 数据库基础
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • 网络通信
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 前端基础
  • Vue
  • React
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 运维与部署
  • 音视频处理
  • 随笔
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)

沉梦听雨

时间是最好的浸渍剂,而沉淀是最好的提纯器🚀
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 数据库基础
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • 网络通信
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 前端基础
  • Vue
  • React
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 运维与部署
  • 音视频处理
  • 随笔
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)
  • 开发工具篇

    • idea相关

    • 玩转Git

    • 构建工具

      • Maven相关

      • Gradle相关

        • Gradle简介
          • 为什么需要了解 Gradle
          • Gradle 是什么
          • 核心概念
            • Project(项目)
            • Task(任务)
            • Plugin(插件)
          • Groovy DSL vs Kotlin DSL
          • Gradle vs Maven 全面对比
            • 依赖声明对比
            • 构建脚本对比
          • Gradle 的优缺点
            • 优点
            • 缺点
          • 实际项目示例
          • 学习参考
        • Gradle安装与项目结构
        • Gradle构建脚本详解
        • Gradle依赖管理
        • Gradle常用命令
        • Gradle多项目构建
        • Gradle进阶与实战
    • 前端工具

    • 测试工具

    • AI工具

  • 工具库篇

  • 开发技巧篇

  • 工具类系列

  • 运维与部署

  • 音视频处理

  • 随笔

  • 开发日常
  • 开发工具篇
  • 构建工具
  • Gradle相关
沉梦听雨
2026-10-30
目录

Gradle简介

# Gradle 简介

# 为什么需要了解 Gradle

如果你一直用 Maven,可能会遇到这些场景:

  • 构建脚本不够灵活:想在打包时自动执行一段自定义逻辑,Maven 需要写插件或 Mojo,门槛较高。
  • 大型项目构建慢:Maven 的构建是线性的,Gradle 支持增量编译和并行构建,大型项目提速明显。
  • Spring Boot 官方推荐:从 Spring Boot 2.x 开始,官方文档的示例逐步转向 Gradle;Spring Boot 4.x 的起步依赖在 Gradle 下体验更好。
  • Android 生态:Android 项目官方构建工具就是 Gradle,绕不开。

简单说:Maven 够用,Gradle 更灵活、更快。如果你在做 Spring Boot 4 / Android / 现代化 Java 项目,Gradle 是值得投入学习的。

# Gradle 是什么

Gradle 是一个基于 Groovy/Kotlin DSL 的自动化构建工具,结合了 Ant 的灵活性和 Maven 的约定优于配置思想。

核心特点:

特点 说明
DSL 驱动 用 Groovy 或 Kotlin 编写构建脚本,而非 XML
约定优于配置 内置标准项目结构(类似 Maven),零配置即可上手
增量构建 只编译变更过的文件,二次构建速度极快
构建缓存 跨项目、跨机器复用构建产物
并行构建 多模块项目可并行执行无依赖的 task
可编程 构建脚本本身就是代码,可直接写 if/for、调用方法

# 核心概念

# Project(项目)

每次运行 Gradle 构建时,会创建一个或多个 Project 对象。单模块项目只有一个 Project,多模块项目(如 settings.gradle 中 include 了多个子项目)每个模块对应一个 Project。

# Task(任务)

Task 是 Gradle 构建的最小执行单元,类似于 Maven 的 goal。一个 Project 包含多个 Task,Task 之间可以声明依赖关系(dependsOn),Gradle 会按依赖顺序执行。

// 定义一个简单的 task
task hello {
    doLast {
        println 'Hello Gradle!'
    }
}
1
2
3
4
5
6

执行:gradlew hello

# Plugin(插件)

Plugin 是一组 Task 和约定的集合,用于扩展 Gradle 的能力。例如 java 插件提供了编译、测试、打包等标准 Task;org.springframework.boot 插件提供了 bootRun、bootJar 等 Task。

plugins {
    id 'java'                              // Java 构建
    id 'org.springframework.boot'          // Spring Boot
    id 'io.spring.dependency-management'   // 依赖管理
}
1
2
3
4
5

这和 Maven 的插件概念类似,但 Gradle 插件更像是"功能包",一个插件带来一整套 Task 和约定。

# Groovy DSL vs Kotlin DSL

Gradle 支持两种脚本语言编写构建文件:

对比项 Groovy DSL Kotlin DSL
文件名 build.gradle build.gradle.kts
语法风格 动态、简洁、灵活 静态、类型安全、IDE 补全好
学习曲线 低,容错性强 中,需了解 Kotlin 语法
IDE 支持 一般 优秀(IntelliJ 原生支持)
官方趋势 仍广泛使用 官方推荐新项目使用

选择建议:如果你从 Maven 转过来、追求快速上手,先用 Groovy DSL;如果是新项目且团队熟悉 Kotlin,用 Kotlin DSL 获得更好的类型安全和 IDE 体验。

本文以 Groovy DSL 为主进行讲解,因为上手更直观,且大量开源项目(如 Spring Boot 源码示例)仍在使用。涉及 Kotlin DSL 差异时会特别标注。

# Gradle vs Maven 全面对比

对比维度 Maven Gradle
构建文件 pom.xml(XML 声明式) build.gradle / build.gradle.kts(代码式)
灵活性 低,扩展需写插件 高,脚本可直接编程
构建速度 较慢(全量构建) 快(增量编译 + 构建缓存 + 并行)
依赖管理 <dependencies> + scope dependencies + configuration(更细粒度)
版本管理 <dependencyManagement> / BOM Version Catalog(libs.versions.toml)
多模块 父子 POM 继承 settings.gradle + include
生命周期 三套固定生命周期 Task 图 + 依赖驱动
学习曲线 低,约定固定 中,需理解 DSL 和 Task 模型
生态 最成熟,插件最多 快速增长,Spring/Android 主推

# 依赖声明对比

Maven(XML):

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>3.2.0</version>
</dependency>
1
2
3
4
5

Gradle(Groovy DSL):

implementation 'org.springframework.boot:spring-boot-starter-web:3.2.0'
1

Gradle 用一行字符串 group:name:version 就能声明一个依赖,比 Maven 的 XML 标签简洁很多。

# 构建脚本对比

Maven 要在打包阶段执行自定义逻辑,需要配置插件:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
        <execution>
            <phase>package</phase>
            <configuration>
                <tasks>
                    <echo>Building project...</echo>
                </tasks>
            </configuration>
            <goals><goal>run</goal></goals>
        </execution>
    </executions>
</plugin>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Gradle 直接在脚本里写代码:

tasks.named('jar') {
    doFirst {
        println 'Building project...'
    }
}
1
2
3
4
5

# Gradle 的优缺点

# 优点

  1. 构建速度快:增量编译 + 构建缓存 + 守护进程(Daemon),二次构建通常比 Maven 快数倍。
  2. 灵活可编程:构建脚本就是代码,条件判断、循环、方法调用信手拈来。
  3. 依赖配置细粒度:implementation / api / compileOnly / runtimeOnly 等配置项比 Maven 的 scope 更精确。
  4. Version Catalog:用 TOML 文件集中管理依赖版本,比 Maven 的 dependencyManagement 更直观。
  5. 现代化生态:Spring Boot、Android 官方主推,社区活跃。

# 缺点

  1. 学习曲线:需要理解 DSL、Task 模型、Configuration 等概念。
  2. 构建脚本可能变复杂:灵活性是双刃剑,缺乏约束时脚本容易膨胀。
  3. 版本兼容性:Gradle 大版本升级偶尔有 breaking change,插件版本需匹配。
  4. 企业级成熟度:Maven 在传统企业中仍占主流,部分内部基建对 Gradle 支持不完善。

# 实际项目示例

以 interview-guide (opens new window) 项目为例,这是一个 Spring Boot 4.1 + Java 25 + Spring AI 2.0 的项目,使用 Gradle 构建。

项目根目录的关键文件:

interview-guide/
├── settings.gradle          # 多项目配置,声明包含哪些子项目
├── gradle.properties        # Gradle 全局属性(JDK 路径、JVM 参数)
├── gradle/
│   ├── libs.versions.toml   # Version Catalog,集中管理依赖版本
│   └── wrapper/             # Gradle Wrapper,锁定 Gradle 版本
├── gradlew / gradlew.bat    # Wrapper 脚本,无需本地安装 Gradle
├── app/                     # 子项目
│   └── build.gradle         # 子项目构建脚本
└── build/                   # 构建输出目录
1
2
3
4
5
6
7
8
9
10

settings.gradle 声明了项目结构和插件仓库:

pluginManagement {
    repositories {
        maven { url = uri('https://maven.aliyun.com/repository/public/') }
        maven { url = uri('https://maven.aliyun.com/repository/gradle-plugin/') }
        gradlePluginPortal()
    }
}

rootProject.name = 'interview-guide'
include('app')
1
2
3
4
5
6
7
8
9
10

app/build.gradle 中的核心配置:

plugins {
    id 'java'
    alias(libs.plugins.spring.boot)
    alias(libs.plugins.spring.dependency.management)
}

group = 'com.interview'
version = '0.0.1-SNAPSHOT'

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-webmvc'
    runtimeOnly 'org.postgresql:postgresql'
    compileOnly libs.lombok
    annotationProcessor libs.lombok
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

后续文章会逐一拆解这些配置的含义。

# 学习参考

  • Gradle 官方文档 (opens new window)
  • Gradle 用户指南(中文) (opens new window)
  • Spring Boot Gradle 插件文档 (opens new window)
上次更新: 2026/10/30 17:49:00
Maven配置文件详解
Gradle安装与项目结构

← Maven配置文件详解 Gradle安装与项目结构→

Theme by Vdoing | Copyright © 2023-2026 沉梦听雨 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式