腳本、預編譯腳本或二進位外掛程式之間的選擇取決於您的特定需求和偏好。

腳本外掛程式 簡單易於編寫。它們以 Kotlin DSL 或 Groovy DSL 編寫。它們適用於小型、一次性任務或快速實驗。然而,隨著建置腳本的大小和複雜性增加,它們可能會變得難以維護。

預編譯腳本外掛程式 是編譯成 Java 類別檔案並打包在函式庫中的 Kotlin 或 Groovy DSL 腳本。與腳本外掛程式相比,它們提供更好的效能和可維護性,並且可以在不同的專案中重複使用。您也可以使用 Groovy DSL 編寫它們,但不建議這樣做。

二進位外掛程式 是以 Java、Groovy 或 Kotlin 編寫,編譯成 JAR 檔案並發佈到儲存庫的完整外掛程式。它們提供最佳的效能、可維護性和可重複使用性。它們適用於需要在專案、建置和團隊之間共享的複雜建置邏輯。您也可以使用 Scala 或 Groovy 編寫它們,但不建議這樣做。

以下是實作 Gradle 外掛程式的所有選項的細分

# 使用 類型 外掛程式為 建議嗎?

1

Kotlin DSL

腳本外掛程式

.gradle.kts 檔案中,作為實作 Plugin<Project> 介面的 apply(Project project) 方法的抽象類別。

[1]

2

Groovy DSL

腳本外掛程式

.gradle 檔案中,作為實作 Plugin<Project> 介面的 apply(Project project) 方法的抽象類別。

[1]

3

Kotlin DSL

預編譯腳本外掛程式

一個 .gradle.kts 檔案。

4

Groovy DSL

預編譯腳本外掛程式

一個 .gradle 檔案。

尚可[2]

5

Java

二進位外掛程式

在 Java 中,實作 Plugin<Project> 介面的 apply(Project project) 方法的抽象類別。

6

Kotlin / Kotlin DSL

二進位外掛程式

在 Kotlin 和/或 Kotlin DSL 中,實作 Plugin<Project> 介面的 apply(Project project) 方法的抽象類別。

7

Groovy / Groovy DSL

二進位外掛程式

在 Groovy 和/或 Groovy DSL 中,實作 Plugin<Project> 介面的 apply(Project project) 方法的抽象類別。

尚可[2]

8

Scala

二進位外掛程式

在 Scala 中,實作 Plugin<Project> 介面的 apply(Project project) 方法的抽象類別。

[2]

如果您懷疑外掛程式碼有問題,請嘗試建立 Build Scan 以找出瓶頸。Gradle profiler 可以協助自動化 Build Scan 的產生並收集更多底層資訊。


1. 腳本外掛程式 維護困難。請勿使用 apply from: 腳本外掛程式,不建議使用。
2. 建議使用靜態類型語言(如 JavaKotlin)來實作外掛程式,以降低二進位不相容的可能性。如果使用 Groovy,請考慮使用靜態編譯的 Groovy