Gradle 建立在一個外掛程式系統上。Gradle 本身主要由基礎架構組成,例如精密的相依性解析引擎。其餘功能來自外掛程式。

外掛程式是一段軟體,提供 Gradle 建置系統額外的功能

gradle basic 6

外掛程式可以套用於 Gradle 建置指令碼,以新增新的工作、組態或其他與建置相關的功能

Java 函式庫外掛程式 - java-library

用於定義和建置 Java 函式庫。它會使用 compileJava 工作編譯 Java 原始碼,使用 javadoc 工作產生 Javadoc,並使用 jar 工作將已編譯的類別封裝成 JAR 檔案。

Google 服務 Gradle 外掛程式 - com.google.gms:google-services

使用稱為 googleServices{} 的組態區塊和稱為 generateReleaseAssets 的工作,在您的 Android 應用程式中啟用 Google API 和 Firebase 服務。

Gradle Bintray 外掛程式 - com.jfrog.bintray

讓您可以使用 bintray{} 區塊設定外掛程式,將成品發佈到 Bintray。

外掛程式發行

外掛程式以三種方式發行

  1. 核心外掛程式 - Gradle 開發並維護一組核心外掛程式

  2. 社群外掛程式 - Gradle 的社群透過Gradle 外掛程式入口網站分享外掛程式。

  3. 本機外掛程式 - Gradle 讓使用者可以使用API建立自訂外掛程式。

套用外掛程式

套用外掛至專案,讓外掛能擴充專案功能。

在建置指令碼中套用外掛,請使用外掛 ID(全域唯一識別碼/名稱)和版本

plugins {
    id «plugin id» version «plugin version»
}

1. 核心外掛

Gradle 核心外掛是一組包含在 Gradle 發行版中的外掛。這些外掛提供建置和管理專案的基本功能。

以下是核心外掛的一些範例

  • java:提供建置 Java 專案的支援。

  • groovy:新增編譯和測試 Groovy 原始檔的支援。

  • ear:新增建置 EAR 檔案的支援,以供企業應用程式使用。

核心外掛的獨特之處在於,在建置指令碼中套用時,會提供簡短的名稱,例如核心 JavaPluginjava。此外,也不需要版本。若要將 java 外掛套用至專案

build.gradle.kts
plugins {
    id("java")
}

有許多 Gradle 核心外掛 可供使用者使用。

2. 社群外掛

社群外掛是由 Gradle 社群開發的外掛,而非 Gradle 核心發行版的一部分。這些外掛提供額外的功能,可能特定於某些使用案例或技術。

Spring Boot Gradle 外掛 會封裝可執行 JAR 或 WAR 檔案,並執行 Spring Boot Java 應用程式。

若要將 org.springframework.boot 外掛套用至專案

build.gradle.kts
plugins {
    id("org.springframework.boot") version "3.1.5"
}

社群外掛可以在 Gradle 外掛入口網站 發布,其他 Gradle 使用者可以輕鬆地發現並使用這些外掛。

3. 本機外掛

自訂或本機外掛會在特定專案或組織中開發和使用。這些外掛不會公開分享,而且會針對專案或組織的特定需求量身打造。

本機外掛可以封裝常見的建置邏輯,提供與內部系統或工具的整合,或將複雜的功能抽象成可重複使用的元件。

Gradle 提供使用者使用 API 開發自訂外掛的功能。若要建立自己的外掛,通常會遵循下列步驟

  1. 定義外掛類別:建立一個新的類別,並實作 Plugin<Project> 介面。

    // Define a 'HelloPlugin' plugin
    class HelloPlugin : Plugin<Project> {
        override fun apply(project: Project) {
            // Define the 'hello' task
            val helloTask = project.tasks.register("hello") {
                doLast {
                    println("Hello, Gradle!")
                }
            }
        }
    }
  2. 建置並選擇性發布外掛:產生一個包含外掛程式碼的 JAR 檔案,並選擇性地將此 JAR 發布至儲存庫(本機或遠端),以供其他專案使用。

    // Publish the plugin
    plugins {
        `maven-publish`
    }
    
    publishing {
        publications {
            create<MavenPublication>("mavenJava") {
                from(components["java"])
            }
        }
        repositories {
            mavenLocal()
        }
    }
  3. 套用您的外掛程式:當您想要使用外掛程式時,請在建置檔案的 plugins{} 區塊中包含外掛程式的 ID 和版本。

    // Apply the plugin
    plugins {
        id("com.example.hello") version "1.0"
    }

請參閱 外掛程式開發章節 以深入了解。