iT邦幫忙

2021 iThome 鐵人賽

DAY 13
0
Software Development

Gradle 通靈術系列 第 13

第十三天:初探 Gradle Build Script

對於一個 Gradle 專案來說,一切設定與運作的核心都紀錄在 Build Script 裡。為了讓我們更了解 Gradle,今天就來瞭解一下 Build Script 的基本架構及常見設定。

Gradle Build Script

Gradle 的 Build Script 最少由兩個檔案組成,build.gradle[.kts]settings.gradle[.kts]。雖然 Gradle 核心是用 Java 撰寫,但為了提供更好的擴充介面,Gradle 提供了 DSL 語法,讓開發者能用簡潔、更具語義的方式來擴充 Gradle。Gradle 一開始選 Groovy 做 DSL,而當 Kotlin 出現後,Gradle 也順勢增加了對 Kotlin DSL 的支援。所以在建立專案的時候,Gradle 會問您想用哪種語言寫 DSL。假如選 Groovy,則 Build Script 的檔名就是 build.gradle;假如選 Kotlin,則檔名後面就會多一個 .kts,意思是指用 Kotlin Script 來執行。

一個觀念可以先放在心上,build.gradle.kts 會對應到 org.gradle.api.Project;而 settings.gradle.kts 則是對應到 org.gradle.api.initialization.Settings。在這個系列裡,我們會全程使用 Kotlin DSL 來寫 Build Script。

三大常見區塊

我們把前面練習專案的 build.gradle.kts 打開來看一下,其中 pluginsrepositoriesdependencies 這三個區塊的設定是最常見的,因為是以 Kotlin DSL 的語法實作,所以看起來會很像呼叫 Lambda:

plugins {
    // ...
}

repositories {
    // ...
}

dependencies {
    // ...
}

plugins

全面有提到 Gradle 運作的基本單元是任務(Task),Gradle 內建就有提供一些基本任務供我們使用,不夠時 Gradle 也支援撰寫客製化任務來擴充,當我們想重複利用這些客製化任務時,就可以把它們抽取出來獨立成一個 Plugin。

Gradle 官方也提供 Gradle Plugin Portal 供開發者將自己的 Plugin 發表在這個平台上,Plugin 的使用者也可以很方便的在上面查詢 Plugin 的詳細資料。以我同事發表的 Docker Plugin 為例,您可以在網頁上查到該 Plugin 的版本、原始碼位置以及如何將 Plugin 套用到 Build Script 的語法:

plugins {
  id("org.jetbrains.gradle.docker") version "1.1.7"
}

repositories

一個專案使用到的相依套件有可能來自不同的儲存庫,repostiory 區段可以讓我們指定當 Gradle 要抓相依套件時,要去哪些儲存庫抓?以目前來說,最主要的儲存庫應該就是 Maven Central。當然,您也可以用自定的儲存庫,比方說 JetBrains 的 Space 就支援提供與 Gradle 相容的儲存庫存放機制。

dependencies

當我們要描述當前專案有用到哪些第三方相依套件時,就是紀錄在 dependencies 區段裡。在這個區段裡應該會常看到兩種宣告方式,一種是 implementation、另一種是 testImplementation

implementation 表示該相依套件在編譯時要被一併使用,但 testImplementation 則表示只有在運行測試的時候需要被一起編譯,也就是說,通常會使用這種方式宣告的都是跟測試有關的套件或框架。

在宣告相依套件時,需要指定套件的三個資訊:GroupNameVersion,我們可以將這三個資訊以 : 連接成一個字串表示。以 Kotest 這個測試框架裡的 io.kotest:kotest-runner-junit5:4.6.3 套件為例,io.kotest 就是 Group、kotest-runner-junit5 就是 Name、4.6.3 就是 Version。當我們在查詢套件資訊的時候,我會推薦大家到 Maven Central 網站上輸入自己想要查詢的套件名稱,選擇好版本進到詳細頁面後,這個網站就會把所有 Build Tool 的各種語法都顯示在右邊,可以直接 Copy-Paste 回來即可。

參考資料


上一篇
第十二天:初探 Gradle 任務
下一篇
第十四天:初探 Build Scan
系列文
Gradle 通靈術24
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言