Java Gradle 外掛開發外掛可用於協助開發 Gradle 外掛。它會自動套用 Java 函式庫 (java-library
) 外掛,將 gradleApi()
相依性加入 api
組態,並在執行 jar
工作時驗證外掛的元資料。
此外掛也會整合 TestKit,這個函式庫有助於撰寫和執行外掛程式碼的功能測試。它會自動將 gradleTestKit()
相依性加入 testImplementation
組態,並產生一個 GradleRunner
執行個體找到時會使用的外掛類別路徑清單檔。請參閱 使用外掛開發外掛自動注入類別路徑,以進一步了解其使用方式、設定選項和範例。
使用
若要使用 Java Gradle 外掛開發外掛,請在您的建置指令碼中包含下列內容
plugins {
`java-gradle-plugin`
}
plugins {
id 'java-gradle-plugin'
}
套用外掛會自動套用 Java 函式庫(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 發布 (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
)。