在 Spring Boot 3 中配置 Gradle 任務
一、簡介
Spring Boot Gradle 插件在 Gradle 中提供 Spring Boot 支持。它允許我們打包可執行的 JAR 或 war 存檔,運行 Spring Boot 應用程序,並使用spring-boot-dependencies
提供的依賴管理。 Spring Boot 3 Gradle 插件需要 Gradle 7.x(7.5 或更高版本)或 8.x,並且可以與 Gradle 的配置緩存一起使用。
在本教程中,我們將學習 Spring Boot 3 Gradle 插件任務配置。 Spring Boot 3 Gradle 插件中有幾個可用的 gradle 任務。我們將使用一個簡單的 Spring Boot 應用程序來演示配置一些任務。我們不會出於演示目的向我們的 Spring Boot 應用程序添加任何安全或數據功能。事不宜遲,現在讓我們更詳細地定義和配置任務。
2.配置bootJar
Gradle任務
在 Spring Boot 3 Gradle 插件中,Gradle 任務比之前的版本得到了改進。一些常見的 Gradle 任務是bootJar
、 bootWar
、 bootRun
和bootBuildImage
。讓我們深入了解bootJar
並了解如何配置bootJar
任務。
要配置bootJar
任務,我們必須在build.gradle
文件中添加一個bootJar
配置塊:
tasks.named("bootJar") {
launchScript{
enabled = true
}
enabled = true
archiveFileName = "bael-6094.${archiveExtension.get()}"
}
此配置塊為bootJar
任務設置了幾個選項。
launchScript
屬性生成打包在生成的 JAR 中的啟動腳本。這允許像運行任何其他命令一樣運行 JAR。例如,無需顯式使用java -jar <jarname>
我們將能夠使用jarname
或./jarname
來運行 JAR。要禁用bootjar
任務,我們將屬性enabled
設置為false
。它默認設置為true
。
我們可以使用archiveFileName
屬性定義輸出 JAR 名稱。現在,我們都準備好運行bootJar
任務:
gradlew bootJar
這會在build/libs
文件夾中生成一個完全可執行的 JAR。在我們的例子中,JAR 名稱將是bael-6094.jar.
3.分層JAR生成
Spring Boot Gradle 插件支持構建分層 JAR。這有助於減少內存使用並促進關注點分離。
讓我們配置bootJar
任務以使用分層架構。我們將 JAR 分成兩層,一個application
和一個springBoot
層:
bootJar {
layered {
enabled = true
application {
layer = 'application'
dependencies {
// Add any dependencies that should be included in the application layer
}
}
springBoot {
layer = 'spring-boot'
}
}
}
本例中啟用了分層特性,定義了兩層: application
層和spring-boot
層。 application
層包含應用程序代碼和任何指定的依賴項,而spring-boot
層包含 Spring Boot 框架及其依賴項。
接下來,讓我們使用bootJar
任務構建我們的 Spring Boot 應用程序:
./gradlew bootJar
這將在名為{projectName}-{projectVersion}-layers.jar
的build/libs
目錄中創建一個分層 JAR 文件。
當我們在分層架構中將應用程序代碼與 Spring Boot 框架代碼分開時,我們可以獲得更快的啟動時間和更低的內存使用量。此外,在我們的分層 JAR 文件中,我們為應用程序和框架設置了單獨的層。因此,我們可以跨多個應用共享框架層。這導致代碼重複和資源的減少。
4.配置bootBuildImage
任務
現在讓我們使用任務bootBuildImage
來構建我們的 Docker 鏡像。新插件使用 Cloud Native Buildpacks (CNB) 創建 OCI 映像。
任務bootBuildImage
需要訪問docker
守護進程。默認情況下,它將通過本地連接與 Docker 守護進程通信。這適用於所有支持平台上的Docker 引擎,無需任何特定配置。我們可以使用DOCKER_HOST
、 DOCKER_TLS_VERIFY
、 DOCKER_CERT_PATH
等環境變量更改默認值。此外,我們可以選擇使用插件配置不同的屬性。
讓我們在build.gradle
中添加一個帶有自定義配置的典型bootBuildImage
任務:
tasks.named("bootBuildImage") {
imageName = 'bael-6094:latest'
}
接下來,讓我們運行bootBuildImage
命令:
gradlew.bat bootBuildImage
讓我們確保我們的docker
服務在我們的操作系統上啟動並運行。 Docker 適用於所有主要操作系統,無論是 Windows、Linux 還是 macOS。作為運行bootBuildImage
任務的結果,我們在 Docker 環境中獲得了一個圖像。讓我們列出本地環境中可用的 Docker 鏡像來驗證我們新建的鏡像:
docker images
現在,我們準備好運行我們的容器了:
docker run -p 8080:8080 bael-6094:latest
-p 8080:8080
將我們的主機端口 8080 映射到容器端口 8080。默認情況下,Spring Boot 在容器內的端口 8080 上運行我們的應用程序,容器將其公開以供外部映射。 bootBuildImage
任務中還有其他幾個可用的配置選項,我們可以將它們用於不同的功能。
現在讓我們在瀏覽器中導航到http://localhost:8080/hello
以驗證輸出。
5.結論
在本文中,我們介紹了一些 Spring Boot 3 Gradle 插件任務。這些任務比以前的版本有很多改進。與往常一樣,文章代碼 在 GitHub 上可用。