Gradle 可以與許多不同的第三方工具整合,例如 IDE 和持續整合平台。我們在此探討一些較常見的工具,以及如何將您自己的工具與 Gradle 整合。
IDE
- Android Studio
-
作為 IntelliJ IDEA 的變體,Android Studio 內建支援匯入和組建 Gradle 專案。您也可以使用 Gradle 的 IDEA 外掛程式 微調匯入流程(如有必要)。
此 IDE 也有 詳細的使用者指南,協助您充分利用 IDE 和 Gradle。
- Eclipse
-
如果您要在 Eclipse 中處理具有 Gradle 組建的專案,您應該使用 Eclipse Buildship 外掛程式。這將讓您匯入和執行 Gradle 組建。如果您需要微調匯入流程,讓專案正確載入,您可以使用 Gradle 的 Eclipse 外掛程式。請參閱 相關的版本公告,了解您可以進行哪些微調。
- IntelliJ IDEA
-
IDEA 內建支援匯入 Gradle 專案。如果您需要微調匯入流程,讓專案正確載入,您可以使用 Gradle 的 IDEA 外掛程式。
- NetBeans
-
在 Apache NetBeans 中內建支援 Gradle
- Visual Studio
-
對於開發 C++ 專案,Gradle 附帶 Visual Studio 外掛程式。
- Xcode
-
對於開發 C++ 專案,Gradle 附帶 Xcode 外掛程式。
- CLion
-
JetBrains 支援使用 Gradle 組建 C++ 專案。
持續整合
我們有專門的指南,說明如何將 Gradle 專案與下列 CI 平台整合
即使您不使用上述其中一個,您幾乎可以肯定地設定您的 CI 平台,以使用 Gradle Wrapper 腳本。
如何與 Gradle 整合
有兩種主要方式可以將工具與 Gradle 整合
-
Gradle 建置使用該工具
-
該工具執行 Gradle 建置
前者通常 實作為 Gradle 外掛。後者可透過嵌入 Gradle 透過下方所述的 Tooling API 來完成。
使用 Tooling API 嵌入 Gradle
Tooling API 簡介
Gradle 提供一個稱為 Tooling API 的程式設計 API,您可以使用它將 Gradle 嵌入到您自己的軟體中。這個 API 讓您可以執行和監控建置,並針對建置的詳細資料查詢 Gradle。這個 API 的主要受眾是 IDE、CI 伺服器、其他 UI 作者;不過,這個 API 對任何需要在其應用程式中嵌入 Gradle 的人開放。
-
Gradle TestKit 使用 Tooling API 進行 Gradle 外掛的功能測試。
-
Eclipse Buildship 使用 Tooling API 來匯入您的 Gradle 專案和執行工作。
-
IntelliJ IDEA 使用 Tooling API 來匯入您的 Gradle 專案和執行工作。
Tooling API 功能
Tooling API 的基本特徵是它以版本獨立的方式運作。這表示您可以使用相同的 API 來處理使用不同 Gradle 版本的建置,包括比您所使用的 Tooling API 版本新或舊的版本。Tooling API 具有 Gradle wrapper 意識,而且預設使用與 wrapper 驅動建置相同的 Gradle 版本。
Tooling API 提供的一些功能
-
查詢建置的詳細資料,包括專案階層、專案相依性、外部相依性(包括原始碼和 Javadoc jar)、原始碼目錄和每個專案的任務。
-
執行建置並監聽 stdout 和 stderr 記錄和進度訊息(例如,在命令列上執行時「狀態列」中顯示的訊息)。
-
執行特定的測試類別或測試方法。
-
在建置執行時接收有趣的事件,例如專案組態、任務執行或測試執行。
-
取消正在執行的建置。
-
將多個獨立的 Gradle 建置結合為單一的複合建置。
-
Tooling API 可以下載並安裝適當的 Gradle 版本,類似於 wrapper。
-
實作輕巧,只有少數相依性。它也是一個行為良好的函式庫,不會對您的類別載入器結構或記錄組態做出任何假設。這使得 API 容易嵌入到您的應用程式中。
Tooling API 和 Gradle 建置 Daemon
Tooling API 始終使用 Gradle daemon。這表示後續對 Tooling API 的呼叫,不論是模型建置請求或任務執行請求,都將在同一個長駐程序中執行。Gradle Daemon 包含有關 daemon 的更多詳細資料,特別是關於何時分岔新 daemon 的資訊。
快速入門
由於 Tooling API 是開發人員的介面,因此 Javadoc 是它的主要文件。
若要使用 Tooling API,請將下列儲存庫和相依性宣告新增到您的建置指令碼
repositories {
maven { url = uri("https://repo.gradle.org/gradle/libs-releases") }
}
dependencies {
implementation("org.gradle:gradle-tooling-api:$toolingApiVersion")
// The tooling API need an SLF4J implementation available at runtime, replace this with any other implementation
runtimeOnly("org.slf4j:slf4j-simple:1.7.10")
}
repositories {
maven { url 'https://repo.gradle.org/gradle/libs-releases' }
}
dependencies {
implementation "org.gradle:gradle-tooling-api:$toolingApiVersion"
// The tooling API need an SLF4J implementation available at runtime, replace this with any other implementation
runtimeOnly 'org.slf4j:slf4j-simple:1.7.10'
}
Tooling API 的主要進入點是 GradleConnector。您可以從那裡導航以尋找程式碼範例和探索可用的 Tooling API 模型。您可以使用 GradleConnector.connect() 來建立 ProjectConnection。ProjectConnection
會連線到單一的 Gradle 專案。使用連線,您可以執行任務、測試和檢索與此專案相關的模型。
Java 和 Gradle 版本的相容性
實作 Gradle 整合時,應考量下列元件:Tooling API 版本、執行 Tooling API 客戶端 (即 IDE 程序) 的 JVM、執行 Gradle 惡魔的 JVM,以及 Gradle 版本。
Tooling API 本身是作為 Gradle 發行的一部分發布的 Java 函式庫。每個 Gradle 發行都有對應的 Tooling API 版本,版本號碼相同。
Tooling API 類別載入到客戶端的 JVM 中,因此它們應具有相符的版本。Tooling API 函式庫的目前版本與 Java 8 相容性編譯。
執行 Tooling API 客戶端的 JVM 和執行惡魔的 JVM 可能不同。同時,透過自訂建置動作傳送到建置的類別需要針對最低支援的 Java 版本。Gradle 支援的 JVM 版本是特定於版本的。上限定義在相容性矩陣中。下限的規則如下
-
Gradle 3.x 和 4.x 需要 Java 7 的最低版本。
-
Gradle 5 以上需要 Java 8 的最低版本。
Tooling API 版本保證支援使用最近五個主要版本的 Gradle 版本執行建置。例如,Tooling API 8.0 發行與 Gradle 版本 >= 3.0 相容。此外,Tooling API 保證與目前和下一個主要版本的未來 Gradle 發行相容。這表示,例如,Tooling API 的 8.1 版本將能夠執行 Gradle 9.x 建置,並可能與 Gradle 10.0 中斷。