Java Gradle 外掛程式開發外掛程式可用於協助開發 Gradle 外掛程式。它會自動套用Java Library (java-library
) 外掛程式,將 gradleApi()
相依性新增至 api
配置,並在 jar
工作執行期間執行外掛程式中繼資料的驗證。
此外掛程式也與 TestKit 整合,TestKit 是一個協助撰寫和執行外掛程式碼功能測試的程式庫。它會自動將 gradleTestKit()
相依性新增至 testImplementation
配置,並在找到外掛程式類別路徑資訊清單檔案時,由 GradleRunner
實例取用。如需更多關於其用法、配置選項和範例的資訊,請參閱 使用外掛程式開發外掛程式自動注入類別路徑。
用法
若要使用 Java Gradle 外掛程式開發外掛程式,請在您的建置腳本中包含以下內容
plugins {
`java-gradle-plugin`
}
plugins {
id 'java-gradle-plugin'
}
套用此外掛程式會自動套用 Java Library (java-library
) 外掛程式,並將 gradleApi()
相依性新增至 api
配置。它也會為建置新增一些驗證。
將執行下列驗證
-
外掛程式有定義外掛程式描述符。
-
外掛程式描述符包含
implementation-class
屬性。 -
implementation-class
屬性參考 jar 中的有效類別檔案。 -
每個屬性 getter 或對應的欄位都必須使用屬性註解進行註解,例如
@InputFile
和@OutputDirectory
。不參與最新檢查的屬性應使用@Internal
進行註解。
任何失敗的驗證都會導致警告訊息。
對於您正在開發的每個外掛程式,請將一個條目新增至 gradlePlugin {}
腳本區塊
gradlePlugin {
plugins {
create("simplePlugin") {
id = "org.gradle.sample.simple-plugin"
implementationClass = "org.gradle.sample.SimplePlugin"
}
}
}
gradlePlugin {
plugins {
simplePlugin {
id = 'org.gradle.sample.simple-plugin'
implementationClass = 'org.gradle.sample.SimplePlugin'
}
}
}
gradlePlugin {}
區塊定義專案正在建置的外掛程式,包括外掛程式的 id
和 implementationClass
。從關於正在開發的外掛程式的此資料中,Gradle 可以自動執行以下操作
-
在
jar
檔案的META-INF
目錄中產生外掛程式描述符。 -
為每個外掛程式配置 外掛程式標記成品 發布 (Maven 或 Ivy)。
-
將每個外掛程式發布到 Gradle 外掛程式入口網站 (詳細資訊請參閱 將外掛程式發布到 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
)。