在前面的討論中,我們已經介紹了如何使用 Spring Initializr 建立 Spring Boot 3 專案,並簡單認識了 Maven。
接下來,我們要認識另一個 Spring Boot 支援的建構工具(Build Tool):Gradle。
Gradle 是一款 強大且靈活的建構工具(Build Tool),用於管理 Java、Kotlin、Groovy 等專案的 依賴管理(Dependency Management) 與 建構流程(Build Process)。與傳統的 Maven 相比,Gradle 具有更高的靈活性與更快的建構速度,並且使用 Groovy 或 Kotlin DSL 作為建構腳本。
以下是典型的 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
}
初學者只要記得三個區塊:
mavenCentral()
)。Maven 與 Gradle 皆為 Java 生態系主流的建構工具,兩者的核心差異如下:
項目 | Maven | Gradle |
---|---|---|
語法 | XML (pom.xml ) |
Groovy/Kotlin DSL (build.gradle ) |
彈性 | 結構固定,較容易入門 | 可程式化,適合複雜專案 |
建構速度 | 全量建構,速度中等 | 支援快取與增量建構,速度快 |
學習曲線 | 容易上手,適合初學者 | DSL 語法需適應,較有彈性 |
生態支援 | Java、Spring Boot 常用 | Java、Spring Boot、Android、Kotlin 都支援 |