Java Gradle 教學
Gradle 是一個基於 JVM 的現代化建置工具,它的目標是結合 Maven 的依賴管理靈活性與 Ant 的強大功能。Google 選擇 Gradle 作為 Android Studio 的官方建置系統,使得 Gradle 在 Java 生態系中迅速普及。
與 Maven 使用 XML 不同,Gradle 使用基於 Groovy 或 Kotlin 的 DSL (Domain Specific Language) 來撰寫腳本,這讓建置邏輯更具程式化能力且更易讀。
為什麼選擇 Gradle?
- 靈活性高:因為是腳本語言,可以輕鬆撰寫複雜的建置邏輯
- 效能更好:由於增量建置 (Incremental Build) 和建置快取 (Build Cache) 機制,Gradle 的建置速度通常比 Maven 快很多
- 簡潔的設定:相比 XML,Gradle 腳本通常更短、更乾淨
安裝 Gradle
與 Maven 類似,Gradle 也推薦使用 Wrapper,因此你未必需要全域安裝 Gradle。但若要安裝:
- 先安裝 JDK (Gradle 執行需要 JVM)
- 下載:前往 Gradle 官網
- 使用套件管理工具 (推薦):
- macOS:
brew install gradle - Windows:
choco install gradle
- macOS:
驗證安裝:
gradle -v
從零建立 Gradle 專案
使用 gradle init 指令可以快速初始化專案。
- 建立資料夾:創建並進入一個新資料夾 (例如
my-app) - 初始化:
gradle init
- 選擇專案類型:選擇
2: application(應用程式)。 - 選擇語言:選擇
3: Java。 - 選擇 DSL:選擇
1: Groovy或2: Kotlin(建議初學者選 Groovy)。 - 選擇測試框架:選擇
4: JUnit Jupiter。 - 設定專案名稱與 Package:使用預設值即可。
完成後,Gradle 會自動產生標準的專案結構與 Wrapper 檔案。
Gradle 專案結構
Gradle 預設支援 Maven 的目錄結構:
my-app/
├── build.gradle (建置腳本)
├── settings.gradle (專案設定,如模組名稱)
└── src/
├── main/
│ ├── java/
│ └── resources/
└── test/
├── java/
└── resources/
build.gradle 核心概念 (Groovy DSL)
這是一個標準的 Java 應用程式 build.gradle 範例:
/* 1. 引用插件 */
plugins {
id 'java'
id 'application'
}
/* 2. 專案屬性 */
group = 'com.example'
version = '1.0.0-SNAPSHOT'
repositories {
mavenCentral() // 指定使用 Maven Central 倉庫
}
/* 3. 依賴管理 */
dependencies {
// 測試依賴
testImplementation platform('org.junit:junit-bom:5.10.0')
testImplementation 'org.junit.jupiter:junit-jupiter'
// 一般依賴 (例如 Gson)
implementation 'com.google.code.gson:gson:2.10.1'
}
/* 4. 應用程式設定 */
application {
mainClass = 'com.example.App'
}
/* 5. 任務設定 */
test {
useJUnitPlatform()
}
常見配置項 (Configuration)
Gradle 依賴管理的配置項與 Maven Scope 對應關係:
| Gradle | Maven Scope | 說明 |
|---|---|---|
implementation | compile | 專案內部依賴,不會暴露給依賴此專案的其他模組 |
api | compile | 會暴露給其他模組 (需引用 java-library plugin) |
compileOnly | provided | 編譯時需要,執行時不需要 |
runtimeOnly | runtime | 執行時需要,編譯時不需要 |
testImplementation | test | 僅測試時需要 |
Gradle Wrapper (gradlew)
強烈建議使用 Wrapper。這會產生 gradlew (Unix) 和 gradlew.bat (Windows) 腳本。
初始化 Wrapper:
gradle wrapper
使用 Wrapper 執行指令:
./gradlew build
常用 Gradle 任務 (Tasks)
Gradle 的工作單元稱為 Task。
./gradlew build:完整的建置專案(包含編譯、測試、打包)./gradlew clean:刪除build/目錄./gradlew run:執行應用程式Main Class (需applicationplugin)./gradlew test:執行測試./gradlew tasks:列出所有可用的任務./gradlew tasks:列出所有可用的任務
執行應用程式
如果你的專案使用了 application plugin (執行 gradle init 選擇 application 類型時會自動加入),你可以直接使用 run 任務來執行程式。
./gradlew run
這會自動編譯並執行設定在 Main-Class 的程式。
Maven vs Gradle 比較
| 特性 | Maven | Gradle |
|---|---|---|
| 設定檔格式 | XML (pom.xml) | Groovy / Kotlin DSL (build.gradle) |
| 建置速度 | 較慢 | 顯著較快 (增量建置) |
| 學習曲線 | 較低,結構固定 | 較高,需學習 DSL |
| 靈活性 | 低,依靠 Plugin | 高,可寫程式邏輯 |
| IDE 支援 | 極佳 | 極佳 (IntelliJ 為主) |
總結
- Gradle 是功能強大且高效的下一代建置工具
- 語法簡潔,基於 Groovy 或 Kotlin DSL
- 推薦在大型專案或 Android 開發中使用
- 記得使用 Gradle Wrapper 確保環境一致