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

IDE

安卓工作室

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

该 IDE 还具有内容丰富的用户指南,可帮助您充分利用 IDE 和 Gradle。

如果您想在 Eclipse 中处理具有 Gradle 构建的项目,您应该使用Eclipse Buildship 插件。这将允许您导入并运行 Gradle 构建。如果您需要微调导入过程以便项目正确加载,您可以使用Gradle 的 Eclipse 插件。有关可以进行哪些微调的详细信息,请参阅相关的发布公告。

IntelliJ IDEA

IDEA 内置了对导入 Gradle 项目的支持。如果您需要微调导入过程以便项目正确加载,您可以使用适用于 Gradle 的 IDEA 插件

网豆

Apache NetBeans中对 Gradle 的内置支持

视觉工作室

为了开发 C++ 项目,Gradle 附带了一个Visual Studio 插件

Xcode

为了开发 C++ 项目,Gradle 附带了Xcode 插件

克利翁

JetBrains 支持使用 Gradle 构建 C++ 项目

持续集成

我们有专门的指南向您展示如何将 Gradle 项目与以下 CI 平台集成:

即使您不使用上述其中之一,您几乎肯定可以将 CI 平台配置为使用Gradle Wrapper脚本。

如何与 Gradle 集成

将工具与 Gradle 集成有两种主要方法:

  • Gradle构建使用该工具

  • 该工具执行 Gradle 构建

前一种情况通常作为 Gradle 插件实现。后者可以通过 Tooling API 嵌入 Gradle 来完成,如下所述。

使用工具 API 嵌入 Gradle

工具 API 简介

Gradle 提供了一个称为 Tooling API 的编程 API,您可以使用它来将 Gradle 嵌入到您自己的软件中。此 API 允许您执行和监视构建以及查询 Gradle 有关构建的详细信息。该 API 的主要受众是 IDE、CI 服务器、其他 UI 作者;但是,该 API 向任何需要将 Gradle 嵌入其应用程序的人开放。

工具 API 功能

Tooling API 的一个基本特征是它以独立于版本的方式运行。这意味着您可以使用相同的 API 来处理使用不同版本的 Gradle 的构建,包括比​​您正在使用的工具 API 版本更新或旧的版本。工具 API 是 Gradle 包装器感知的,并且默认情况下使用与包装器驱动的构建所使用的相同的 Gradle 版本。

Tooling API 提供的一些功能:

  • 查询构建的详细信息,包括项目层次结构和项目依赖项、外部依赖项(包括源和 Javadoc jar)、源目录和每个项目的任务。

  • 执行构建并监听 stdout 和 stderr 日志记录和进度消息(例如,当您在命令行上运行时,“状态栏”中显示的消息)。

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

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

  • 取消正在运行的构建。

  • 将多个单独的 Gradle 构建合并为单个复合构建。

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

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

工具 API 和 Gradle 构建守护进程

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

快速开始

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

要使用工具 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。您可以从那里导航以查找代码示例并探索可用的工具 API 模型。您可以使用GradleConnector.connect()创建ProjectConnection。 AProjectConnection连接到单个 Gradle 项目。使用该连接,您可以执行与该项目相关的任务、测试和检索模型。

Java 和 Gradle 版本的兼容性

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

Tooling API 本身是一个 Java 库,作为 Gradle 版本的一部分发布。每个 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 兼容。此外,工具 API 保证与当前和下一个主要版本的未来 Gradle 版本兼容。例如,这意味着 8.1 版本的 Tooling API 将能够运行 Gradle 9.x 构建,但可能会与 Gradle 10.0 兼容。