通过使用 Gradle init 创建 Java 应用程序来了解 Gradle 的基础知识。

在本节中,您将:

  • 初始化一个新的Gradle项目

  • 构建项目

  • 回顾 Gradle 的项目结构

  • 在 IntelliJ IDEA 中打开项目

  • 探索 Gradle 文件和构建脚本

  • 了解 Gradle 包装器

步骤 0. 开始之前

  1. 确保您已安装 Gradle

  2. 安装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 项目结构,并将其与我们的教程项目进行比较:

项目结构

构建包含

  1. 顶级settings.gradle(.kts)文件。

  2. 一个根项目

  3. 一个或多个子项目,每个子项目都有自己的build.gradle(.kts)文件。

某些构建可能build.gradle(.kts)在根项目中包含文件,但不建议这样做。

libs.version.toml文件是用于依赖关系管理的版本目录,您将在本教程的后续部分中了解它。

在本教程中:

  1. 根项目称为教程rootProject.name = "tutorial"在文件中定义settings.gradle

  2. 子项目称为appinclude("app") ,并在文件中定义settings.gradle

根项目可以位于顶级目录中,也可以有自己的目录。

构建:

  • 表示您可以一起构建、测试和/或发布的一组相关软件。

  • 可以选择包含其他构建(即附加软件,如库、插件、构建时工具等)。

一个专案:

  • 代表架构的单个部分 - 库、应用程序、Gradle 插件等。

  • 可以选择包含其他项目。

步骤 5. 在 IDE 中查看 Gradle 文件

双击目录settings.gradle.kts中的文件,在 IntelliJ IDEA 中打开项目tutorial。对于 Groovy DSL 用户,单击文件时可能需要选择 IntelliJ IDEA 应用程序settings.gradle

IntelliJ IDEA IDE

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

intellij idea 打开

步骤 6. 了解设置文件

一个项目由一个或多个子项目(有时称为模块)组成。

Gradle 读取该settings.gradle(.kts)文件以找出哪些子项目构成项目构建。

查看项目中的文件:

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")
settings.gradle
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目录下):

build.gradle.kts
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()
}
build.gradle
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子项目正在使用哪些依赖项和插件以及在哪里可以找到它们。我们将在以下部分中更详细地讨论这一点。

下一步: 运行任务>>