知識庫 / Spring / Spring Boot RSS 訂閱

Spring Boot Gradle 任務配置

Gradle,Spring Boot
HongKong
4
11:34 AM · Dec 06 ,2025

1. 引言

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 任務包括 bootJarbootWarbootRunbootBuildImage。 讓我們深入瞭解 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

此操作會生成一個可執行的 JAR 文件,位於 build/libs 文件夾中。 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'
        }
    }
}

在此示例中,啓用了分層功能,並定義了兩個層級:應用程序層Spring Boot層應用程序層包含應用程序代碼以及任何指定的依賴項,而Spring Boot層包含Spring Boot框架及其依賴項。

接下來,我們使用bootJar任務構建我們的Spring Boot應用程序:

./gradlew bootJar

這將創建一個分層 JAR 文件,位於 build/libs 目錄下,文件名為 {projectName}-{projectVersion}-layers.jar

通過在分層架構中分離應用程序代碼和 Spring Boot 框架代碼,我們能夠獲得更快的啓動時間和更低的內存使用率。 此外,與我們在分層 JAR 文件中所做的那樣,我們擁有應用程序層和框架層。 因此,我們可以在多個應用程序之間共享框架層,從而減少代碼重複和資源消耗。

4. 配置 bootBuildImage任務

現在,我們將使用 bootBuildImage任務來構建我們的 Docker 鏡像。新的插件使用 Cloud Native Buildpacks (CNB) 創建 OCI 鏡像

bootBuildImage任務需要訪問 docker守護進程。它將默認通過本地連接與 Docker 守護進程通信。這與 Docker Engine 在所有受支持平台上均有效,無需任何特定配置。我們可以使用環境變量(如 DOCKER_HOSTDOCKER_TLS_VERIFYDOCKER_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 插件任務。這些任務在許多方面比之前的版本都有了改進。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.