Gradle 入门教程

FreeGuideOnline 最新 2026-07-14

bash java -version


### 下载与安装

1. 访问 [Gradle 官网下载页](https://gradle.org/releases/) 获取最新发行版。
2. 解压到指定目录,例如 `/opt/gradle`。
3. 设置环境变量:
   ```bash
   export GRADLE_HOME=/opt/gradle
   export PATH=$PATH:$GRADLE_HOME/bin
  1. 验证安装:
    gradle -v
    

使用 Gradle Wrapper

推荐在项目中使用 Wrapper,它能为项目绑定指定的 Gradle 版本,无需手动安装:

gradle wrapper --gradle-version 8.5

生成的 gradlewgradlew.bat 脚本可以自动下载并使用该版本。

第一个 Gradle 项目

初始化项目

在空目录中执行:

gradle init

按提示选择项目类型、语言、构建脚本 DSL 等,快速生成项目骨架。

默认目录结构

大多数 Gradle 项目遵循标准布局:

project/
├── build.gradle         # 构建脚本(Groovy DSL)或 build.gradle.kts(Kotlin DSL)
├── settings.gradle      # 多项目构建设置
├── gradlew
├── gradlew.bat
├── gradle/
│   └── wrapper/
├── src/
│   ├── main/
│   │   ├── java/
│   │   └── resources/
│   └── test/
│       ├── java/
│       └── resources/

理解构建脚本

build.gradle 基本结构

一个简单的 Java 项目构建脚本如下(Groovy DSL):

plugins {
    id 'java'
}

group = 'com.example'
version = '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    testImplementation 'junit:junit:4.13.2'
}

tasks.named('test') {
    useJUnitPlatform()
}
  • plugins:声明使用的插件,如 java 插件提供编译、测试等标准任务。
  • repositories:指定依赖下载的仓库,常用 Maven Central 或自定义私服。
  • dependencies:定义项目的依赖坐标,testImplementation 表示仅测试环境使用。
  • tasks:可对已有任务进行配置,例如指定测试框架。

Kotlin DSL 示例

plugins {
    java
}

group = "com.example"
version = "1.0-SNAPSHOT"

repositories {
    mavenCentral()
}

dependencies {
    testImplementation("junit:junit:4.13.2")
}

tasks.test {
    useJUnitPlatform()
}

核心概念

任务(Tasks)

任务代表一次构建操作,如编译代码、运行测试、打包 JAR 等。常用命令:

  • gradle tasks 列出所有可用任务
  • gradle build 执行完整构建
  • gradle clean 清理构建产物

自定义简单任务:

tasks.register('hello') {
    doLast {
        println 'Hello, Gradle!'
    }
}

执行 gradle hello 即可看到输出。

项目与多项目构建

  • 项目:代表一个可构建的组件,可以是一个库或应用。
  • 根项目:在多项目构建中协调各子项目。

多项目配置在 settings.gradle 中声明:

rootProject.name = 'my-app'
include 'module-a', 'module-b'

然后在子目录中创建各自的 build.gradle

依赖管理

Gradle 支持配置(configurations)来分组依赖,常见的有:

  • implementation:编译和运行时依赖
  • api:暴露给消费者的编译依赖(Java Library 插件)
  • testImplementation:仅测试编译和运行时依赖
  • runtimeOnly:仅运行时依赖

高级功能包括传递依赖排除、强制版本等:

dependencies {
    implementation('org.springframework:spring-core:5.3.23') {
        exclude group: 'commons-logging', module: 'commons-logging'
    }
}

插件

插件扩展 Gradle 的能力,Java、Android、Spring Boot 等都有官方插件。应用插件:

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.1.0'
}

常用命令速查

命令 说明
gradle build 编译、测试并打包项目
gradle clean 删除构建目录
gradle test 运行所有测试
gradle run 运行应用(需 Application 插件)
gradle tasks 列出所有可用任务
gradle dependencies 查看依赖树
gradle --refresh-dependencies 强制刷新依赖缓存
gradle wrapper --gradle-version 更新 Wrapper 指定版本

构建缓存与性能优化

Gradle Daemon

自 Gradle 3.0 起默认启用守护进程,避免重复启动 JVM 消耗。可通过 gradle.properties 调整:

org.gradle.daemon=true
org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m

构建缓存

启用本地构建缓存可重用之前任务的输出,加速后续构建:

org.gradle.caching=true

增量构建

Gradle 会自动检测输入输出变化,仅重新执行受影响的任务。尽量让任务明确 inputsoutputs 可最大化受益。

常见问题

Q: 如何导入依赖的依赖?

A: Gradle 自动处理传递依赖,使用 dependencies 任务可查看完整依赖树。

Q: 如何将自定义任务添加到构建流程?

A: 使用 dependsOn 关联已有任务:

tasks.named('build') {
    dependsOn 'myCustomTask'
}