使用 Gradle 构建 Spring Boot 项目

更新于 2025-12-29

baeldung 2024-03-17

1. 概述

Spring Boot Gradle 插件帮助我们在使用 Gradle 作为构建工具时,管理 Spring Boot 的依赖项,并打包和运行我们的应用程序。

在本教程中,我们将讨论如何添加和配置该插件,然后演示如何构建和运行一个 Spring Boot 项目。

2. 构建文件配置

首先,我们需要在 build.gradle 文件的 plugins 部分中添加 Spring Boot 插件:

plugins {
    id "org.springframework.boot" version "2.0.1.RELEASE"
}

如果我们使用的是早于 Gradle 2.1 的版本,或者需要动态配置插件,也可以按如下方式添加:

buildscript {
    ext {
        springBootVersion = '2.0.1.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'org.springframework.boot'

3. 打包应用程序

我们可以通过执行 build 命令将应用程序打包为可执行的归档文件(JAR 或 WAR):

./gradlew build

生成的可执行归档文件将位于 build/libs 目录下。

如果我们要生成可执行的 JAR 文件,则还需要应用 java 插件:

apply plugin: 'java'

而如果需要生成 WAR 文件,则应应用 war 插件:

apply plugin: 'war'

构建应用程序会为 Spring Boot 1.x 和 2.x 两个版本都生成可执行归档文件。不过,每个版本对应的 Gradle 任务有所不同。

接下来,我们分别看看不同 Boot 版本的构建过程。

3.1. Spring Boot 2.x

在 Boot 2.x 中,bootJarbootWar 任务负责打包应用程序。

  • bootJar 任务用于创建可执行的 JAR 文件。一旦应用了 java 插件,该任务会自动创建。

我们可以直接执行 bootJar 任务:

./gradlew bootJar
  • 类似地,bootWar 用于生成可执行的 WAR 文件,并在应用 war 插件后自动创建。

我们可以使用以下命令执行 bootWar 任务:

./gradlew bootWar

注意:对于 Spring Boot 2.x,我们需要使用 Gradle 4.0 或更高版本。

我们还可以对这两个任务进行配置。例如,通过 mainClassName 属性设置主类:

bootJar {
    mainClassName = 'com.baeldung.Application'
}

或者,也可以使用 Spring Boot DSL 中的相同属性:

springBoot {
    mainClassName = 'com.baeldung.Application'
}

3.2. Spring Boot 1.x

在 Spring Boot 1.x 中,bootRepackage 任务负责创建可执行的归档文件(JAR 或 WAR,具体取决于配置)。

我们可以直接执行 bootRepackage 任务:

./gradlew bootRepackage

与 Boot 2.x 类似,我们也可以在 build.gradle 中对 bootRepackage 任务进行配置:

bootRepackage {
    mainClass = 'com.example.demo.Application'
}

此外,我们还可以通过将 enabled 选项设为 false 来禁用该任务:

bootRepackage {
    enabled = false
}

4. 运行应用程序

构建完成后,我们可以直接使用 java -jar 命令运行生成的可执行 JAR 文件:

java -jar build/libs/demo.jar

Spring Boot Gradle 插件还提供了 bootRun 任务,使我们无需先构建即可直接运行应用程序:

./gradlew bootRun

我们可以在 build.gradle 中对 bootRun 任务进行简单配置。例如,指定主类:

bootRun {
    main = 'com.example.demo.Application'
}

5. 与其他插件的关系

5.1. 依赖管理插件(Dependency Management Plugin)

在 Spring Boot 1.x 中,该插件会自动应用依赖管理插件(Dependency Management Plugin),从而导入 Spring Boot 依赖的 BOM(Bill of Materials),其作用类似于 Maven 中的依赖管理。

但从 Spring Boot 2.x 开始,如果我们需要此功能,必须在 build.gradle 中显式应用该插件:

apply plugin: 'io.spring.dependency-management'

5.2. Java 插件

当我们应用 java 插件时,Spring Boot Gradle 插件会执行多项操作,例如:

  • 创建 bootJar 任务,用于生成可执行 JAR 文件;
  • 创建 bootRun 任务,用于直接运行应用程序;
  • 禁用默认的 jar 任务。

5.3. War 插件

类似地,当我们应用 war 插件时,会触发以下行为:

  • 创建 bootWar 任务,用于生成可执行 WAR 文件;
  • 禁用默认的 war 任务。

6. 结论

在本篇简明教程中,我们学习了 Spring Boot Gradle 插件及其各种任务。

同时,我们也探讨了它与其他插件之间的交互关系。