1、简介 {#1简介}
Spring Boot Gradle Plugin 在 Gradle 中提供 Spring Boot 支持。它允许我们打包可执行的 JAR 或 war 文件,运行 Spring Boot 应用程序,并使用 spring-boot-dependencies
提供的依赖管理。Spring Boot 3 Gradle Plugin 需要 Gradle 7.x (7.5 或更高版本)或 8.x,并可与 Gradle 的配置缓存一起使用。
在这个教程中,我们将学习关于 Spring Boot 3 Gradle Plugin Task 配置的内容。Spring Boot 3 Gradle Plugin 提供了几个 Gradle task 可用。我们将使用一个简单的 Spring Boot 应用来演示如何配置一些 task。出于演示的目的,我们不会添加任何 security 配置或数据到我们的 Spring Boot 应用中。话不多说,现在让我们深入详细定义和配置这些 task。
2、配置 bootJar
Gradle Task {#2配置-bootjar-gradle-task}
在 Spring Boot 3 Gradle Plugin中,Gradle task 比以前的版本有所改进。一些常见的 Gradle task 包括 bootJar
、bootWar
、bootRun
和 bootBuildImage
。让我们深入了解 bootJar
,看看如何配置 bootJar
task。
要配置 bootJar
task,我们必须在 build.gradle
文件中添加一个 bootJar
配置块:
tasks.named("bootJar") {
launchScript{
enabled = true
}
enabled = true
archiveFileName = "bael-6094.${archiveExtension.get()}"
}
该配置块为 bootJar
task 设置了几个选项。
属性 launchScript
会生成一个打包在生成的 JAR 中的启动脚本。这样就可以像运行其他命令一样运行 JAR。例如,无需明确使用 java -jar <jarname>
,我们就能使用 jarname
或 ./jarname
运行 JAR。要禁用 bootjar
task,我们要将 enabled
属性设为 false
。默认设置为 true
。
我们可以使用 archiveFileName
属性定义输出 JAR 名称。现在,我们可以运行 bootJar
task 了:
gradlew bootJar
这会在 build/libs
文件夹中生成一个完全可执行的 JAR。在我们的例子中,JAR 的名称是 bael-6094.jar
。
3、生成分层 JAR {#3生成分层-jar}
Spring Boot Gradle Plugin 支持构建分层 JAR。这有助于减少内存使用并促进关注点分离。
让我们将 bootJar
task 配置为使用分层架构。我们将 JAR 分成两层,一层是 application,另一层是 springBoot:
bootJar {
layered {
enabled = true
application {
layer = 'application'
dependencies {
// 添加应用层中应包含的任何依赖
}
}
springBoot {
layer = 'spring-boot'
}
}
}
在本示例中,启用了分层功能,并定义了两个层:application
层和 spring-boot
层。application
层包含应用程序代码和任何指定的依赖项,而 spring-boot
层包含 Spring Boot 框架及其依赖项。
接下来,让我们使用 bootJar
task 构建 Spring Boot 应用程序:
./gradlew bootJar
这将在 build/libs
目录中创建一个分层 JAR 文件,文件名为 {projectName}-{projectVersion}-layers.jar
。
由于我们在分层架构中将应用程序代码与 Spring Boot 框架代码分开,因此启动时间更快,内存使用量更低。此外,在我们的分层 JAR 文件中,应用层和框架层是分开的。因此,我们可以在多个应用程序中共享框架层。这就减少了代码的重复和资源的浪费。
4、配置 bootBuildImage
Task {#4配置-bootbuildimage-task}
现在让我们使用 bootBuildImage
task 来构建我们的 Docker 镜像。新 Plugin 使用云原生构建包(Cloud Native Buildpacks)来创建 OCI 镜像。
bootBuildImage
task 需要访问一个 Docker 守护进程。默认情况下,它会通过本地连接与 Docker 守护进程通信。在所有支持的平台上,这都能与 Docker Engine 配合使用,无需任何特定配置。我们可以使用 DOCKER_HOST
、DOCKER_TLS_VERIFY
、DOCKER_CERT_PATH
等环境变量更改默认值。此外,我们还可以选择使用 Plugin 配置不同的属性。
让我们在 build.gradle
中添加一个带有自定义配置的典型 bootBuildImage
task:
tasks.named("bootBuildImage") {
imageName = 'bael-6094:latest'
}
接下来,运行 bootBuildImage
命令:
gradlew.bat bootBuildImage
让我们确保我们的 docker 服务已在操作系统上启动并运行。Docker 适用于所有主流操作系统,无论是 Windows、Linux 还是 macOS。运行 bootBuildImage
task 后,我们就能在 Docker 环境中获得一个镜像。可以通过如下命令列出本地环境中可用的 Docker 镜像,以验证新构建的镜像:
docker images
现在,我们可以运行容器了:
docker run -p 8080:8080 bael-6094:latest
-p 8080:8080
将主机端口 8080
映射到容器端口 8080
。默认情况下,Spring Boot 会在容器内的 8080 端口上运行我们的应用程序,容器会将其暴露给外部映射。bootBuildImage
task 中还有其他几个配置选项,我们可以用它们来实现不同的功能。
接下来就可以在浏览器中访问 http://localhost:8080/hello
,以验证输出结果。
5、总结 {#5总结}
在本文中,我们介绍了一些 Spring Boot 3 Gradle plugin Task。与之前的版本相比,这些 task 有了许多改进。
原文:https://www.baeldung.com/spring-boot-3-gradle-configure-tasks