第 1 部分:初始化專案
使用 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)
│ ├── libs.version.toml (2)
│ └── ⋮
├── gradle (3)
│ └── wrapper
├── gradlew (4)
├── gradlew.bat (5)
├── settings.gradle.kts (6)
├── app (7)
│ ├── build.gradle.kts
│ └── src
└── ⋮ (8)
1 | 由 Gradle 產生的專案特定快取目錄。 |
2 | 版本目錄,在集中位置定義一組相依性的版本。 |
3 | 包含 Gradle Wrapper 的 JAR 檔案和組態。 |
4 | 使用 Gradle Wrapper 執行建置的 macOS 和 Linux 指令碼。 |
5 | 使用 Gradle Wrapper 執行建置的 Windows 指令碼。 |
6 | 專案的設定檔,其中定義子專案清單。 |
7 | Java 應用程式的原始程式碼和建置設定。 |
8 | 可能會存在一些額外的 Git 檔案,例如 .gitignore 。 |
.
├── .gradle (1)
│ ├── libs.version.toml (2)
│ └── ⋮
├── gradle (3)
│ └── wrapper
├── gradlew (4)
├── gradlew.bat (5)
├── settings.gradle (6)
├── app (7)
│ ├── build.gradle
│ └── src
└── ⋮ (8)
1 | 由 Gradle 產生的專案特定快取目錄。 |
2 | 版本目錄,在集中位置定義一組相依性的版本。 |
3 | 包含 Gradle Wrapper 的 JAR 檔案和組態。 |
4 | 使用 Gradle Wrapper 執行建置的 macOS 和 Linux 指令碼。 |
5 | 使用 Gradle Wrapper 執行建置的 Windows 指令碼。 |
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.version.toml
檔案是一個版本目錄,用於相依性管理,您將在教學的後續部分中瞭解它。
在本教學中
-
根專案稱為教學課程,並在
settings.gradle
檔案中以rootProject.name = "tutorial"
定義。 -
子專案稱為應用程式,並在
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.7.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.7.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
子專案使用哪些相依項和外掛,以及在哪裡可以找到它們。我們將在後續章節中更詳細地探討這一點。
下一步: 執行任務 >>