第一部分:初始化项目
通过使用 Gradle init 创建 Java 应用程序来学习 Gradle 的基础知识。
步骤 0. 开始之前
-
确保您已安装 Gradle。
-
安装 IntelliJ IDEA。Community Edition 是 IntelliJ IDEA 的免费版本。
步骤 1. 初始化项目
要测试 Gradle 安装,请从命令行运行 Gradle
$ gradle
Welcome to Gradle 8.6.
Directory '/' does not contain a Gradle build.
To create a new build in this directory, run gradle init
如果未安装 Gradle,请参阅安装部分。
创建一个名为 tutorial
的新目录并 cd
进入该目录
$ mkdir tutorial
$ cd tutorial
运行带有以下参数的 gradle init
以生成 Java 应用程序
$ gradle init --type java-application --dsl kotlin
$ gradle init --type java-application --dsl groovy
为任何其他提示选择默认值。
在本教程中,所有示例均基于 macOS。 |
完成后,目录应如下所示
.
├── .gradle (1)
│ └── ⋮
├── gradle (2)
│ ├── libs.versions.toml (3)
│ └── wrapper
├── gradlew (4)
├── gradlew.bat (5)
├── settings.gradle.kts (6)
├── app (7)
│ ├── build.gradle.kts
│ └── src
└── ⋮ (8)
1 | Gradle 生成的项目特定缓存目录。 |
2 | 包含 Gradle Wrapper 的 JAR 文件和配置。 |
3 | 版本目录,用于在中心位置定义依赖项的一组版本。 |
4 | macOS 和 Linux 脚本,用于使用 Gradle Wrapper 执行构建。 |
5 | Windows 脚本,用于使用 Gradle Wrapper 执行构建。 |
6 | 项目的 settings 文件,其中定义了子项目列表。 |
7 | Java 应用程序的源代码和构建配置。 |
8 | 可能存在一些额外的 Git 文件,例如 .gitignore 。 |
.
├── .gradle (1)
│ └── ⋮
├── gradle (2)
│ ├── libs.versions.toml (3)
│ └── wrapper
├── gradlew (4)
├── gradlew.bat (5)
├── settings.gradle (6)
├── app (7)
│ ├── build.gradle
│ └── src
└── ⋮ (8)
1 | Gradle 生成的项目特定缓存目录。 |
2 | 包含 Gradle Wrapper 的 JAR 文件和配置。 |
3 | 版本目录,用于在中心位置定义依赖项的一组版本。 |
4 | macOS 和 Linux 脚本,用于使用 Gradle Wrapper 执行构建。 |
5 | Windows 脚本,用于使用 Gradle Wrapper 执行构建。 |
6 | 项目的 settings 文件,其中定义了子项目列表。 |
7 | Java 应用程序的源代码和构建配置。 |
8 | 可能存在一些额外的 Git 文件,例如 .gitignore 。 |
步骤 2. 理解 Gradle Wrapper
Gradle Wrapper 是启动 Gradle 构建的首选方法。Wrapper 下载(如果需要)然后调用构建中声明的特定 Gradle 版本。
在您新创建的项目中,首先查看 Gradle Wrapper 使用的文件。它包含一个用于 macOS 和 Linux 的 shell 脚本 和一个用于 Windows 的批处理脚本 。
这些脚本允许您运行 Gradle 构建,而无需在系统上安装 Gradle。它还有助于确保不同的开发人员以及本地和 CI 机器之间使用相同版本的 Gradle 进行构建。
从现在开始,您将永远不会直接调用 Gradle;而是使用 Gradle wrapper。
步骤 3. 调用 Gradle Wrapper
通过输入以下命令来使用 wrapper
$ ./gradlew build
在 Windows 中,命令是
$ .\gradlew.bat build
首次运行 wrapper 时,如果您的计算机上尚未安装 Gradle 二进制文件,它将下载并缓存这些文件。
Gradle Wrapper 旨在提交到源代码控制,以便任何人都可以构建项目,而无需首先安装和配置特定版本的 Gradle。
在本例中,我们通过 wrapper 调用 Gradle 来构建我们的项目,因此我们可以看到 app
目录现在包含一个新的 build
文件夹
$ cd app
$ ls -al
drwxr-xr-x 10 gradle-user staff 320 May 24 18:07 build
-rw-r--r-- 1 gradle-user staff 862 May 24 17:45 build.gradle.kts
drwxr-xr-x 4 gradle-user staff 128 May 24 17:45 src
drwxr-xr-x 10 gradle-user staff 320 May 24 18:07 build
-rw-r--r-- 1 gradle-user staff 862 May 24 17:45 build.gradle
drwxr-xr-x 4 gradle-user staff 128 May 24 17:45 src
构建过程生成的所有文件都将进入 build
目录,除非另有指定。
步骤 4. 理解 Gradle 的项目结构
让我们看一下标准的 Gradle 项目结构,并将其与我们的教程项目进行比较

一个 build 包含
-
一个顶层
settings.gradle(.kts)
文件。 -
一个 根项目。
-
一个或多个 子项目,每个子项目都有自己的
build.gradle(.kts)
文件。
某些构建可能在根项目中包含 build.gradle(.kts)
文件,但这不建议这样做。
libs.versions.toml
文件是一个版本目录,用于依赖项管理,您将在本教程的后续部分中学习它。
在本教程中
-
根项目 称为 tutorial,并在
settings.gradle
文件中使用rootProject.name = "tutorial"
定义。 -
子项目 称为 app,并在
settings.gradle
文件中使用include("app")
定义。
根项目可以在顶层目录中,也可以有自己的目录。
一个构建
-
表示您可以一起构建、测试和/或发布的关联软件包。
-
可以选择包含其他构建(即额外的软件,如库、插件、构建时工具等)。
一个项目
-
表示您的架构的单个部分 - 一个库、一个应用程序、一个 Gradle 插件等。
-
可以选择包含其他项目。
步骤 5. 在 IDE 中查看 Gradle 文件
通过双击 tutorial
目录中的 settings.gradle.kts
文件,在 IntelliJ IDEA 中打开项目。对于 Groovy DSL 用户,当您单击 settings.gradle
文件时,可能需要选择 IntelliJ IDEA 应用程序

在 IDE 中打开 settings.gradle(.kts)
和 build.gradle(.kts)
文件

步骤 6. 理解 Settings 文件
一个项目由一个或多个子项目(有时称为模块)组成。
Gradle 读取 settings.gradle(.kts)
文件以确定哪些子项目构成项目构建。
查看项目中的文件
plugins {
// Apply the foojay-resolver plugin to allow automatic download of JDKs
id("org.gradle.toolchains.foojay-resolver-convention") version "0.9.0"
}
rootProject.name = "tutorial"
include("app")
plugins {
// Apply the foojay-resolver plugin to allow automatic download of JDKs
id 'org.gradle.toolchains.foojay-resolver-convention' version '0.9.0'
}
rootProject.name = 'tutorial'
include('app')
tutorial
根项目包含 app
子项目。include
调用的存在将 app
目录变成一个子项目。
步骤 7. 理解 Build 脚本
每个子项目都包含自己的 build.gradle(.kts)
文件。
build.gradle(.kts)
文件是构建过程的核心组件,定义了构建项目所需的 tasks。
build.gradle(.kts)
文件由 Gradle 读取和执行。
仔细查看 app
子项目(在 app
目录下)中的 build 文件
plugins {
// Apply the application plugin to add support for building a CLI application in Java.
application
}
repositories {
// Use Maven Central for resolving dependencies.
mavenCentral()
}
dependencies {
// Use JUnit Jupiter for testing.
testImplementation(libs.junit.jupiter)
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
// This dependency is used by the application.
implementation(libs.guava)
}
// Apply a specific Java toolchain to ease working on different environments.
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(11))
}
}
application {
// Define the main class for the application.
mainClass.set("running.tutorial.kotlin.App")
}
tasks.named<Test>("test") {
// Use JUnit Platform for unit tests.
useJUnitPlatform()
}
plugins {
// Apply the application plugin to add support for building a CLI application in Java.
id 'application'
}
repositories {
// Use Maven Central for resolving dependencies.
mavenCentral()
}
dependencies {
// Use JUnit Jupiter for testing.
testImplementation libs.junit.jupiter
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
// This dependency is used by the application.
implementation libs.guava
}
// Apply a specific Java toolchain to ease working on different environments.
java {
toolchain {
languageVersion = JavaLanguageVersion.of(11)
}
}
application {
// Define the main class for the application.
mainClass = 'running.tutorial.groovy.App'
}
tasks.named('test') {
// Use JUnit Platform for unit tests.
useJUnitPlatform()
}
此 build 脚本让 Gradle 知道 app
子项目正在使用哪些依赖项和插件以及在哪里可以找到它们。我们将在以下部分中更详细地了解这一点。
下一步: 运行 Tasks >>