Java Gradle 外掛程式開發外掛程式可用於協助開發 Gradle 外掛程式。它會自動套用Java Library (java-library) 外掛程式,將 gradleApi() 相依性新增至 api 配置,並在 jar 工作執行期間執行外掛程式中繼資料的驗證。

此外掛程式也與 TestKit 整合,TestKit 是一個協助撰寫和執行外掛程式碼功能測試的程式庫。它會自動將 gradleTestKit() 相依性新增至 testImplementation 配置,並在找到外掛程式類別路徑資訊清單檔案時,由 GradleRunner 實例取用。如需更多關於其用法、配置選項和範例的資訊,請參閱 使用外掛程式開發外掛程式自動注入類別路徑

用法

若要使用 Java Gradle 外掛程式開發外掛程式,請在您的建置腳本中包含以下內容

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

套用此外掛程式會自動套用 Java Library (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 Publish (maven-publish)Ivy Publish (ivy-publish) 外掛程式。

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

Maven Publish 外掛程式

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

  • 單一「main」發布,名為 pluginMaven,基於 main Java 组件

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

此自動配置發生在 Project.afterEvaluate() 區塊中 (因此在 建置配置階段 結束時),並且僅在尚未定義這些發布時才會發生,因此可以在建置配置的早期階段建立和自訂它們。

Ivy Publish 外掛程式

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

  • 單一「main」發布,名為 pluginIvy,基於 main Java 组件

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

此自動配置發生在 Project.afterEvaluate() 區塊中 (因此在 建置配置階段 結束時),並且僅在尚未定義這些發布時才會發生,因此可以在建置配置的早期階段建立和自訂它們。

Plugin Publish 外掛程式

1.0.0 版開始,Plugin Publish 外掛程式 始終自動套用 Java Gradle 外掛程式 (java-gradle-plugin) 和 Maven Publish 外掛程式 (maven-publish)。