Gradle 构建于灵活的插件系统之上。
开箱即用,Gradle 提供了诸如依赖解析、任务编排和增量构建等核心基础设施。大多数功能 — 例如编译 Java、构建 Android 应用或发布 artifact — 都来自插件。

插件是可重用的软件组件,它为 Gradle 构建系统提供了额外功能。它可以:
-
为您的构建添加新任务(例如
compileJava
或test
) -
添加新配置(例如
implementation
或runtimeOnly
) -
贡献 DSL 元素(例如
application {}
或publishing {}
)
插件使用 plugins
代码块(Kotlin DSL 或 Groovy DSL)应用于构建脚本,它们引入了特定领域或工作流所需的所有逻辑。
常用插件
以下是一些常用插件及其功能:
- Java Library Plugin (
java-library
) -
编译 Java 源代码,生成 Javadoc,并将类打包成 JAR。添加了诸如
compileJava
、javadoc
和jar
等任务。 - Google Services Plugin (
com.google.gms.google-services
) -
在 Android 构建中配置 Firebase 和 Google API。添加了诸如
googleServices {}
等 DSL 以及诸如generateReleaseAssets
等任务。 - Gradle Bintray Plugin (
com.jfrog.bintray
) -
使用
bintray {}
配置块将 artifact 发布到 Bintray(或其他 Maven 风格的仓库)。
应用插件
将插件应用到项目,允许插件扩展项目的能力。
您可以在构建脚本中使用插件 ID(一个全局唯一标识符/名称)和版本来应用插件:
plugins {
id("«plugin id»").version("«plugin version»")
}
例如:
plugins {
id("java-library")
id("com.diffplug.spotless").version("6.25.0")
}
这告诉 Gradle:
-
应用内置的
java-library
插件,该插件添加了用于编译 Java、运行测试和打包库的任务。 -
应用社区维护的
spotless
插件(版本6.25.0
),该插件添加了代码格式化任务,并集成了诸如ktlint
、prettier
和google-java-format
等工具。
插件类型
Gradle 支持三种类型的插件:
-
脚本插件 – 可重用的
.gradle
或.gradle.kts
文件,使用apply from:
应用。 -
预编译插件 – 打包的 Kotlin 或 Groovy 代码,使用
plugins {}
代码块应用。 -
二进制插件 – 打包并发布的插件(通常来自插件门户或 Maven),使用
plugins {}
代码块应用。
大多数现代构建偏好使用二进制或预编译插件。
插件分发
Gradle 插件来自不同的来源,您可以根据您的用例选择合适的类型。
1. 核心插件(内置于 Gradle)
Gradle 核心插件是 Gradle 分发包本身包含的一组插件。这些插件提供了构建和管理项目的基本功能。
核心插件的独特之处在于它们提供短名称,例如用于核心 JavaLibraryPlugin 的 java-library
。您可以通过 ID 应用它们,无需额外设置:
plugins {
id("java-library")
}
这些插件由 Gradle 团队维护。请参阅核心插件参考获取完整列表。
2. 社区插件(来自插件门户)
社区插件是由 Gradle 社区开发的插件,而不是核心 Gradle 分发包的一部分。这些插件提供可能特定于某些用例或技术的额外功能。
Gradle 的插件生态系统包含社区共享的数千个开源插件。这些插件发布到Gradle 插件门户,可以通过 ID 和版本应用:
plugins {
id("org.springframework.boot").version("3.1.5")
}
构建运行时,Gradle 将自动下载插件。
3. 本地或自定义插件(在您的构建中定义)
您也可以编写自己的插件 — 可以在单个项目中使用,或在同一构建中的多个项目之间共享。
最常见的自定义插件类型是约定插件 (convention plugin),它位于 buildSrc/
目录或独立的 build-logic
模块中。这些插件使用 Kotlin 或 Groovy 编写,并遵循与已发布插件相同的结构。
约定插件使用 plugins {}
代码块应用,就像外部插件一样:
plugins {
id("my.custom-conventions")
}
要了解如何创建自己的插件,请参阅插件开发章节。
下一步: 了解增量构建和构建缓存 >>