第 1 部分:初始化项目
通过使用 Gradle init 创建 Java 应用程序来了解 Gradle 的基础知识。
步骤 0. 开始之前
-
确保您已安装 Gradle。
-
安装IntelliJ IDEA。社区版是 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)
│ ├── libs.version.toml (2)
│ └── ⋮
├── gradle (3)
│ └── wrapper
├── gradlew (4)
├── gradlew.bat (5)
├── settings.gradle.kts (6)
├── app (7)
│ ├── build.gradle.kts
│ └── src
└── ⋮ (8)
1 | Project-specific cache directory generated by Gradle. |
2 | The version catalog which defines a set of versions for dependencies in a central location. |
3 | Contains the JAR file and configuration of the Gradle Wrapper. |
4 | macOS and Linux script for executing builds using the Gradle Wrapper. |
5 | Windows script for executing builds using the Gradle Wrapper. |
6 | The project’s settings file where the list of subprojects is defined. |
7 | The source code and build configuration for the Java app. |
8 | Some additional Git files may be present such as .gitignore . |
.
├── .gradle (1)
│ ├── libs.version.toml (2)
│ └── ⋮
├── gradle (3)
│ └── wrapper
├── gradlew (4)
├── gradlew.bat (5)
├── settings.gradle (6)
├── app (7)
│ ├── build.gradle
│ └── src
└── ⋮ (8)
1 | Project-specific cache directory generated by Gradle. |
2 | The version catalog which defines a set of versions for dependencies in a central location. |
3 | Contains the JAR file and configuration of the Gradle Wrapper. |
4 | macOS and Linux script for executing builds using the Gradle Wrapper. |
5 | Windows script for executing builds using the Gradle Wrapper. |
6 | The project’s settings file where the list of subprojects is defined. |
7 | The source code and build configuration for the Java app. |
8 | Some additional Git files may be present such as .gitignore . |
第 2 步:了解 Gradle 包装器
Gradle Wrapper 是启动 Gradle 构建的首选方式。 Wrapper 下载(如果需要),然后调用构建中声明的特定版本的 Gradle。
在新创建的项目中,首先查看 Gradle Wrapper 使用的文件。它由适用于 macOS 和 Linux 的 shell 脚本组成以及 Windows 的批处理脚本。
这些脚本允许您运行 Gradle 构建,而无需在系统上安装 Gradle。它还有助于确保不同开发人员以及本地机器和 CI 机器之间的构建使用相同版本的 Gradle。
从现在开始,你将不再直接调用Gradle;相反,您将使用 Gradle包装器。
步骤 3. 调用 Gradle 包装器
通过输入以下命令来使用包装器:
$ ./gradlew build
在 Windows 中,命令是:
$ .\gradlew.bat build
第一次运行包装器时,它会下载并缓存 Gradle 二进制文件(如果您的计算机上尚未安装)。
Gradle Wrapper 旨在致力于源代码控制,以便任何人都可以构建项目,而无需首先安装和配置特定版本的 Gradle。
在本例中,我们通过包装器调用 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 项目结构,并将其与我们的教程项目进行比较:
构建包含:
-
顶级
settings.gradle(.kts)
文件。 -
一个根项目。
-
一个或多个子项目,每个子项目都有自己的
build.gradle(.kts)
文件。
某些构建可能build.gradle(.kts)
在根项目中包含文件,但不建议这样做。
该libs.version.toml
文件是用于依赖关系管理的版本目录,您将在本教程的后续部分中了解它。
在本教程中:
-
根项目称为教程并
rootProject.name = "tutorial"
在文件中定义settings.gradle
。 -
该子项目称为app
include("app")
,并在文件中定义settings.gradle
。
根项目可以位于顶级目录中,也可以有自己的目录。
构建:
-
表示您可以一起构建、测试和/或发布的一组相关软件。
-
可以选择包含其他构建(即附加软件,如库、插件、构建时工具等)。
一个专案:
-
代表架构的单个部分 - 库、应用程序、Gradle 插件等。
-
可以选择包含其他项目。
步骤 5. 在 IDE 中查看 Gradle 文件
双击目录settings.gradle.kts
中的文件,在 IntelliJ IDEA 中打开项目tutorial
。对于 Groovy DSL 用户,单击文件时可能需要选择 IntelliJ IDEA 应用程序settings.gradle
:
在IDE中打开settings.gradle(.kts)
和文件:build.gradle(.kts)
步骤 6. 了解设置文件
一个项目由一个或多个子项目(有时称为模块)组成。
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.7.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.7.0'
}
rootProject.name = 'tutorial'
include('app')
根tutorial
项目包括app
子项目。调用的存在include
会将app
目录变成子项目。
步骤 7. 了解构建脚本
每个子项目都包含自己的build.gradle(.kts)
文件。
该build.gradle(.kts)
文件是构建过程的核心组件,定义了构建项目所需的任务。
该build.gradle(.kts)
文件由 Gradle 读取并执行。
仔细看看你的app
子项目中的构建文件(app
目录下):
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()
}
这个构建脚本让 Gradle 知道app
子项目正在使用哪些依赖项和插件以及在哪里可以找到它们。我们将在以下部分中更详细地讨论这一点。
下一步: 运行任务>>