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 中,bootJar 和 bootWar 任务负责打包应用程序。
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 插件及其各种任务。
同时,我们也探讨了它与其他插件之间的交互关系。