第一部分:初始化專案
透過使用 Gradle init 建立 Java 應用程式來學習 Gradle 的基礎知識。
步驟 0. 開始之前
-
請確保您已安裝 Gradle。
-
安裝 IntelliJ IDEA。Community Edition 是 IntelliJ IDEA 的免費版本。
步驟 1. 初始化專案
若要測試 Gradle 安裝,請從命令列執行 Gradle
$ gradle
Welcome to Gradle 8.6.
Directory '/' does not contain a Gradle build.
To create a new build in this directory, run gradle init
如果尚未安裝 Gradle,請參閱安裝章節。
建立一個名為 tutorial
的新目錄並 cd
進入
$ mkdir tutorial
$ cd tutorial
執行 gradle init
並使用以下參數來產生 Java 應用程式
$ gradle init --type java-application --dsl kotlin
$ gradle init --type java-application --dsl groovy
針對任何其他提示選取預設值。
在本教學中,所有範例均以 macOS 為基礎。 |
完成後,目錄應如下所示
.
├── .gradle (1)
│ └── ⋮
├── gradle (2)
│ ├── libs.versions.toml (3)
│ └── wrapper
├── gradlew (4)
├── gradlew.bat (5)
├── settings.gradle.kts (6)
├── app (7)
│ ├── build.gradle.kts
│ └── src
└── ⋮ (8)
1 | 由 Gradle 產生的專案特定快取目錄。 |
2 | 包含 Gradle Wrapper 的 JAR 檔案和組態。 |
3 | 版本目錄,其中定義了相依性的一組版本,集中在一個位置。 |
4 | macOS 和 Linux 腳本,用於使用 Gradle Wrapper 執行建置。 |
5 | Windows 腳本,用於使用 Gradle Wrapper 執行建置。 |
6 | 專案的設定檔,其中定義了子專案的清單。 |
7 | Java 應用程式的原始碼和建置組態。 |
8 | 可能存在一些額外的 Git 檔案,例如 .gitignore 。 |
.
├── .gradle (1)
│ └── ⋮
├── gradle (2)
│ ├── libs.versions.toml (3)
│ └── wrapper
├── gradlew (4)
├── gradlew.bat (5)
├── settings.gradle (6)
├── app (7)
│ ├── build.gradle
│ └── src
└── ⋮ (8)
1 | 由 Gradle 產生的專案特定快取目錄。 |
2 | 包含 Gradle Wrapper 的 JAR 檔案和組態。 |
3 | 版本目錄,其中定義了相依性的一組版本,集中在一個位置。 |
4 | macOS 和 Linux 腳本,用於使用 Gradle Wrapper 執行建置。 |
5 | Windows 腳本,用於使用 Gradle Wrapper 執行建置。 |
6 | 專案的設定檔,其中定義了子專案的清單。 |
7 | Java 應用程式的原始碼和建置組態。 |
8 | 可能存在一些額外的 Git 檔案,例如 .gitignore 。 |
步驟 2. 了解 Gradle Wrapper
Gradle Wrapper 是啟動 Gradle 建置的慣用方式。Wrapper 會下載(如果需要)然後調用建置中宣告的特定 Gradle 版本。
在您新建立的專案中,首先查看 Gradle Wrapper 使用的檔案。它包含用於 macOS 和 Linux 的 shell 腳本 以及用於 Windows 的批次腳本 。
這些腳本允許您執行 Gradle 建置,而無需在系統上安裝 Gradle。它還有助於確保不同的開發人員以及本地和 CI 機器之間,建置都使用相同版本的 Gradle。
從現在開始,您將永遠不會直接調用 Gradle;相反地,您將使用 Gradle wrapper。
步驟 3. 呼叫 Gradle Wrapper
透過輸入以下命令來使用 wrapper
$ ./gradlew build
在 Windows 中,命令是
$ .\gradlew.bat build
當您第一次執行 wrapper 時,如果您的機器上尚未安裝 Gradle 二進制檔案,它會下載並快取這些檔案。
Gradle Wrapper 設計為提交到原始碼控制,以便任何人都可以建置專案,而無需先安裝和配置特定版本的 Gradle。
在此案例中,我們透過 wrapper 調用 Gradle 來建置我們的專案,因此我們可以看到 app
目錄現在包含一個新的 build
資料夾
$ cd app
$ ls -al
drwxr-xr-x 10 gradle-user staff 320 May 24 18:07 build
-rw-r--r-- 1 gradle-user staff 862 May 24 17:45 build.gradle.kts
drwxr-xr-x 4 gradle-user staff 128 May 24 17:45 src
drwxr-xr-x 10 gradle-user staff 320 May 24 18:07 build
-rw-r--r-- 1 gradle-user staff 862 May 24 17:45 build.gradle
drwxr-xr-x 4 gradle-user staff 128 May 24 17:45 src
建置程序產生的所有檔案都會進入 build
目錄,除非另有指定。
步驟 4. 了解 Gradle 的專案結構
讓我們看看標準的 Gradle 專案結構,並將其與我們的教學專案進行比較

一個建置包含
-
最上層的
settings.gradle(.kts)
檔案。 -
一個根專案。
-
一個或多個子專案,每個子專案都有自己的
build.gradle(.kts)
檔案。
有些建置可能在根專案中包含 build.gradle(.kts)
檔案,但不建議這樣做。
libs.versions.toml
檔案是一個版本目錄,用於相依性管理,您將在本教學後續章節中學習到相關內容。
在本教學中
-
根專案稱為 tutorial,並在
settings.gradle
檔案中使用rootProject.name = "tutorial"
定義。 -
子專案稱為 app,並在
settings.gradle
檔案中使用include("app")
定義。
根專案可以在最上層目錄中,也可以有自己的目錄。
一個建置
-
代表一組相關的軟體,您可以一起建置、測試和/或發布。
-
可以選擇性地包含其他建置(即額外的軟體,例如函式庫、外掛、建置時工具等)。
一個專案
-
代表您架構的單一部分 - 一個函式庫、一個應用程式、一個 Gradle 外掛等。
-
可以選擇性地包含其他專案。
步驟 5. 在 IDE 中檢視 Gradle 檔案
透過在 tutorial
目錄中雙擊 settings.gradle.kts
檔案,在 IntelliJ IDEA 中開啟專案。對於 Groovy DSL 使用者,當您點擊 settings.gradle
檔案時,可能需要選取 IntelliJ IDEA 應用程式

在 IDE 中開啟 settings.gradle(.kts)
和 build.gradle(.kts)
檔案

步驟 6. 了解設定檔
一個專案由一個或多個子專案(有時稱為模組)組成。
Gradle 讀取 settings.gradle(.kts)
檔案,以找出哪些子專案組成了專案建置。
查看您專案中的檔案
plugins {
// Apply the foojay-resolver plugin to allow automatic download of JDKs
id("org.gradle.toolchains.foojay-resolver-convention") version "0.9.0"
}
rootProject.name = "tutorial"
include("app")
plugins {
// Apply the foojay-resolver plugin to allow automatic download of JDKs
id 'org.gradle.toolchains.foojay-resolver-convention' version '0.9.0'
}
rootProject.name = 'tutorial'
include('app')
tutorial
根專案包含 app
子專案。include
呼叫的存在將 app
目錄轉變為子專案。
步驟 7. 了解建置腳本
每個子專案都包含自己的 build.gradle(.kts)
檔案。
build.gradle(.kts)
檔案是建置程序的核心組件,並定義建置專案所需的任務。
build.gradle(.kts)
檔案由 Gradle 讀取和執行。
更仔細地查看您的 app
子專案(在 app
目錄下)中的建置檔案
plugins {
// Apply the application plugin to add support for building a CLI application in Java.
application
}
repositories {
// Use Maven Central for resolving dependencies.
mavenCentral()
}
dependencies {
// Use JUnit Jupiter for testing.
testImplementation(libs.junit.jupiter)
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
// This dependency is used by the application.
implementation(libs.guava)
}
// Apply a specific Java toolchain to ease working on different environments.
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(11))
}
}
application {
// Define the main class for the application.
mainClass.set("running.tutorial.kotlin.App")
}
tasks.named<Test>("test") {
// Use JUnit Platform for unit tests.
useJUnitPlatform()
}
plugins {
// Apply the application plugin to add support for building a CLI application in Java.
id 'application'
}
repositories {
// Use Maven Central for resolving dependencies.
mavenCentral()
}
dependencies {
// Use JUnit Jupiter for testing.
testImplementation libs.junit.jupiter
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
// This dependency is used by the application.
implementation libs.guava
}
// Apply a specific Java toolchain to ease working on different environments.
java {
toolchain {
languageVersion = JavaLanguageVersion.of(11)
}
}
application {
// Define the main class for the application.
mainClass = 'running.tutorial.groovy.App'
}
tasks.named('test') {
// Use JUnit Platform for unit tests.
useJUnitPlatform()
}
此建置腳本讓 Gradle 知道 app
子專案正在使用哪些相依性和外掛,以及在哪裡可以找到它們。我們將在後續章節中更詳細地查看此內容。
下一步: 執行任務 >>