iT邦幫忙

2025 iThome 鐵人賽

DAY 6
1
Software Development

spring boot 3 學習筆記系列 第 6

Day06 - Spring Boot Gradle 簡介

  • 分享至 

  • xImage
  •  

前言

在前面的討論中,我們已經介紹了如何使用 Spring Initializr 建立 Spring Boot 3 專案,並簡單認識了 Maven。
接下來,我們要認識另一個 Spring Boot 支援的建構工具(Build Tool):Gradle

什麼是 Gradle?

Gradle 是一款 強大且靈活的建構工具(Build Tool),用於管理 Java、Kotlin、Groovy 等專案的 依賴管理(Dependency Management)建構流程(Build Process)。與傳統的 Maven 相比,Gradle 具有更高的靈活性與更快的建構速度,並且使用 Groovy 或 Kotlin DSL 作為建構腳本。

生活化比喻

  • Maven 就像食譜 (Recipe):所有食材(依賴 Dependencies)與步驟(建構流程 Build Process)都寫死在 XML 裡,很清楚但缺乏彈性。
  • Gradle 就像廚師 (Chef):除了能照食譜做菜,還能根據情況調整。例如「如果是週末就多加一道甜點」──這就是 Gradle 使用 Groovy/Kotlin DSL 的彈性。

為何選擇 Gradle?

  • 靈活性高:允許開發者透過 程式化的 DSL (Domain Specific Language) 定義建構邏輯。
  • 快取與增量建構:Gradle 透過快取機制提升建構效率,減少不必要的重複建構時間。
  • 相容性強:支援 Spring Boot、Android、Kotlin 等技術無縫整合。

Gradle 專案結構

以下是典型的 Spring Boot Gradle 專案結構:

|   .gitattributes
|   .gitignore
|   build.gradle
|   gradlew
|   gradlew.bat
|   HELP.md
|   settings.gradle
|   
+---gradle
|   \---wrapper
|           gradle-wrapper.jar
|           gradle-wrapper.properties
|           
\---src
    +---main
    |   +---java
    |   |   \---com
    |   |       \---example
    |   |           \---demo
    |   |                   DemoApplication.java
    |   |                   
    |   \---resources
    |           application.properties
    |           
    \---test
        \---java
            \---com
                \---example
                    \---demo
                            DemoApplicationTests.java

目錄與檔案說明

  • build.gradle:Gradle 建構腳本,定義專案的依賴與建構流程。
  • settings.gradle:Gradle 設定檔,定義專案名稱與子專案資訊。
  • gradlew & gradlew.bat:Gradle Wrapper,提供跨平台的 Gradle 執行方式,並確保每個人使用相同的 Gradle 版本。
  • gradle/wrapper:Gradle Wrapper 相關核心檔案。
  • src/main/java:主要的 Java 原始碼目錄。
  • src/main/resources:應用程式的資源檔案,如 application.properties
  • src/test/java:測試程式碼目錄。

build.gradle 範例與說明

以下是一個 最小可執行 (Minimal Working Example) 的 Spring Boot 專案 build.gradle 範例:

plugins {
    id 'java'                                     // Java 專案支援
    id 'org.springframework.boot' version '3.5.5' // Spring Boot 插件
    id 'io.spring.dependency-management' version '1.1.7' // 相依性管理
}

group = 'com.example'             // 專案群組 ID
version = '0.0.1-SNAPSHOT'        // 專案版本
description = 'Demo project for Spring Boot' // 描述專案用途
java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(21) // 指定 Java 版本
    }
}

repositories {
    mavenCentral() // 相依套件來源
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web' // Web Starter
    testImplementation 'org.springframework.boot:spring-boot-starter-test' // 測試套件
    testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}

tasks.named('test') {
    useJUnitPlatform() // 使用 JUnit 5
}

初學者只要記得三個區塊:

  • plugins:專案要用哪些功能(Spring Boot、Java…)。
  • dependencies:需要哪些套件 (Libraries)。
  • repositories:到哪裡下載套件(通常用 mavenCentral())。

工具選擇:Maven 與 Gradle 的核心差異

Maven 與 Gradle 皆為 Java 生態系主流的建構工具,兩者的核心差異如下:

項目 Maven Gradle
語法 XML (pom.xml) Groovy/Kotlin DSL (build.gradle)
彈性 結構固定,較容易入門 可程式化,適合複雜專案
建構速度 全量建構,速度中等 支援快取與增量建構,速度快
學習曲線 容易上手,適合初學者 DSL 語法需適應,較有彈性
生態支援 Java、Spring Boot 常用 Java、Spring Boot、Android、Kotlin 都支援

相關資料來源


上一篇
Day05 - Spring Boot Maven 簡介
下一篇
Day07 - Spring Boot pom.xml 解析
系列文
spring boot 3 學習筆記17
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言