Gradle 可以与许多不同的第三方工具集成,例如 IDE 和持续集成平台。在这里,我们将介绍一些更常见的工具以及如何将您自己的工具与 Gradle 集成。

IDE

Android Studio

作为 IntelliJ IDEA 的变体,Android Studio 内置支持导入和构建 Gradle 项目。您也可以使用 Gradle 的 IDEA 插件 来微调导入过程,如果需要的话。

此 IDE 还提供 完整的用户指南,帮助您充分利用 IDE 和 Gradle。

Eclipse

如果您想在具有 Gradle 构建的 Eclipse 中处理项目,您应该使用 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 插件实现。后一种情况可以通过以下描述的 Tooling API 嵌入 Gradle 来实现。

使用 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)、每个项目的源代码目录和任务。

  • 执行构建并监听标准输出和标准错误日志以及进度消息(例如,在命令行上运行时显示在“状态栏”中的消息)。

  • 执行特定的测试类或测试方法。

  • 在构建执行时接收有趣的事件,例如项目配置、任务执行或测试执行。

  • 取消正在运行的构建。

  • 将多个独立的 Gradle 构建合并到单个复合构建中。

  • Tooling API 可以下载并安装适当的 Gradle 版本,类似于包装器。

  • 实现轻量级,只有少量依赖项。它也是一个行为良好的库,并且对您的类加载器结构或日志记录配置没有任何假设。这使得 API 易于嵌入到您的应用程序中。

Tooling API 和 Gradle 构建守护进程

Tooling API 始终使用 Gradle 守护进程。这意味着后续对 Tooling API 的调用,无论是模型构建请求还是任务执行请求,都将在同一个长生命周期进程中执行。 Gradle 守护进程 包含有关守护进程的更多详细信息,特别是有关何时分叉新守护进程的信息。

快速入门

由于 Tooling API 是面向开发人员的接口,因此 Javadoc 是其主要文档。

要使用 Tooling API,请将以下存储库和依赖项声明添加到您的构建脚本中

build.gradle.kts
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")
}
build.gradle
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() 创建一个 ProjectConnectionProjectConnection 连接到单个 Gradle 项目。使用连接,您可以执行任务、测试并检索相对于此项目的模型。

Java 和 Gradle 版本的兼容性

在实现 Gradle 集成时,应考虑以下组件:工具 API 版本、运行工具 API 客户端的 JVM(即 IDE 进程)、运行 Gradle 守护进程的 JVM 以及 Gradle 版本。

工具 API 本身是一个 Java 库,作为 Gradle 版本的一部分发布。每个 Gradle 版本都有一个具有相同版本号的对应工具 API 版本。

工具 API 类加载到客户端的 JVM 中,因此它们应该具有匹配的版本。当前版本的工具 API 库使用 Java 8 兼容性编译。

运行工具 API 客户端的 JVM 和运行守护进程的 JVM 可以不同。同时,通过自定义构建操作发送到构建的类需要针对最低支持的 Java 版本。Gradle 支持的 JVM 版本是特定于版本的。上限在兼容性矩阵中定义。下限规则如下:

  • Gradle 3.x 和 4.x 需要最低版本的 Java 7。

  • Gradle 5 及更高版本需要最低版本的 Java 8。

工具 API 版本保证支持使用过去五个主要版本的 Gradle 版本运行构建。例如,工具 API 8.0 版本与 Gradle 版本 >= 3.0 兼容。此外,工具 API 保证与当前和下一个主要版本的未来 Gradle 版本兼容。这意味着,例如,工具 API 的 8.1 版本将能够运行 Gradle 9.x 构建,并且可能会与 Gradle 10.0 不兼容。