Java Gradle 外掛開發外掛可用於協助開發 Gradle 外掛。它會自動套用 Java 函式庫 (java-library) 外掛,將 gradleApi() 相依性加入 api 組態,並在執行 jar 工作時驗證外掛的元資料。

此外掛也會整合 TestKit,這個函式庫有助於撰寫和執行外掛程式碼的功能測試。它會自動將 gradleTestKit() 相依性加入 testImplementation 組態,並產生一個 GradleRunner 執行個體找到時會使用的外掛類別路徑清單檔。請參閱 使用外掛開發外掛自動注入類別路徑,以進一步了解其使用方式、設定選項和範例。

使用

若要使用 Java Gradle 外掛開發外掛,請在您的建置指令碼中包含下列內容

build.gradle.kts
plugins {
    `java-gradle-plugin`
}
build.gradle
plugins {
    id 'java-gradle-plugin'
}

套用外掛會自動套用 Java 函式庫(java-library) 外掛,並將 gradleApi() 相依性加入 api 組態。它也會對建置新增一些驗證。

會執行下列驗證

  • 已為外掛定義外掛描述。

  • 外掛描述包含 implementation-class 屬性。

  • implementation-class 屬性會參考 jar 中的有效類別檔案。

  • 每個屬性 getter 或對應欄位都必須註解有屬性註解,例如 @InputFile@OutputDirectory。不參與最新檢查的屬性應註解有 @Internal

任何驗證失敗都會產生警告訊息。

針對您正在開發的每個外掛程式,新增一個項目至 gradlePlugin {} 程式碼區塊

build.gradle.kts
gradlePlugin {
    plugins {
        create("simplePlugin") {
            id = "org.gradle.sample.simple-plugin"
            implementationClass = "org.gradle.sample.SimplePlugin"
        }
    }
}
build.gradle
gradlePlugin {
    plugins {
        simplePlugin {
            id = 'org.gradle.sample.simple-plugin'
            implementationClass = 'org.gradle.sample.SimplePlugin'
        }
    }
}

gradlePlugin {} 區塊會定義專案正在建置的外掛程式,包括外掛程式的 idimplementationClass。根據這些關於正在開發外掛程式的資料,Gradle 可以自動

互動

外掛程式的部分行為取決於其他相關外掛程式是否也套用在您的建置中,也就是 Maven 發布 (maven-publish)Ivy 發布 (ivy-publish) 外掛程式。

其他外掛程式會自動套用 Java Gradle 外掛程式,例如 外掛程式發布外掛程式

Maven 發布外掛程式

當 Java Gradle 外掛程式 (java-gradle-plugin) 偵測到建置也套用了 Maven 發布外掛程式 (maven-publish) 時,它會自動設定下列 MavenPublications

  • 一個名為 pluginMaven 的「主要」發布,根據 主要 Java 元件 建立

  • 多個 「標記」發布 (針對在 gradlePlugin {} 區塊中定義的每個外掛程式一個),命名為 <pluginName>PluginMarkerMaven (例如,在上述範例中會是 simplePluginPluginMarkerMaven)

此自動設定會發生在 Project.afterEvaluate() 區塊中(因此在 建置設定階段 的最後),且僅在這些出版品尚未定義時才會發生,因此可以在建置設定的較早階段建立並自訂它們。

Ivy 發佈外掛程式

當 Java Gradle 外掛程式 (java-gradle-plugin) 偵測到建置也套用了 Ivy 發佈外掛程式 (ivy-publish) 時,它會自動設定下列 IvyPublications

  • 單一「主要」出版品,命名為 pluginIvy,根據 主要 Java 元件 建立

  • 多個 「標記」出版品(每個在 gradlePlugin {} 區塊中定義的外掛程式一個),命名為 <pluginName>PluginMarkerIvy(例如在上述範例中會是 simplePluginPluginMarkerIvy

此自動設定會發生在 Project.afterEvaluate() 區塊中(因此在 建置設定階段 的最後),且僅在這些出版品尚未定義時才會發生,因此可以在建置設定的較早階段建立並自訂它們。

外掛程式發佈外掛程式

版本 1.0.0 開始,外掛程式發佈外掛程式 會永遠自動套用 Java Gradle 外掛程式 (java-gradle-plugin) 和 Maven 發佈外掛程式 (maven-publish)。