您可以使用 IntelliJ 原生匯入器 或 Eclipse Buildship 在 IDE 中開啟此範例。 |
此範例說明如何透過問題 API 發出問題,以及如何在 IDE 端使用這些報告。
執行範例
若要執行範例,請執行 ./gradlew :sample-ide:importBuild
命令。
專案結構
範例包含多個個別建置,組成一個複合建置,其配置如下
-
sample-project
:報告問題的外掛的 Gradle 建置 -
sample-ide
:模擬 IDE 功能的專案。換句話說,它使用 Gradle Tooling API 設定和執行sample-project
建置,並列印在過程中收到的問題報告。 -
reporters/standard-plugin
在標準 Gradle 外掛中顯示問題 API 的用法。 -
reporters/model-builder-plugin
顯示如何使用問題 API 來回報問題,當透過 Tooling API 讀取專案組態時。 -
reporters/script-plugin
顯示如何在預編譯的指令碼外掛中使用問題 API。
發出問題
問題可透過注入的 Problems
服務發出。以下是從外掛回報問題的範例。
reporters/standard-plugin/src/main/java/reporters/StandardPlugin.java
problems.forNamespace("reporters.standard.plugin").reporting(problem -> problem
.label("The 'standard-plugin' is deprecated")
.documentedAt("https://github.com/gradle/gradle/README.md")
.category("deprecation", "plugin")
.severity(Severity.WARNING)
.solution("Please use a more recent plugin version")
);
接收問題回報
問題會以 Tooling API 進度事件發出。它們可透過註冊 ProgressListener
來處理
sample-ide/src/main/java/org/gradle/sample/SampleIde.java
@Override
public void statusChanged(ProgressEvent progressEvent) {
prettyPrint(((ProblemDescriptor) progressEvent.getDescriptor()));
}