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

插件是一个可重用的软件,它为 Gradle 构建系统提供了额外的功能。它可以
-
为你的构建添加新任务(如
compileJava
或test
) -
添加新配置(如
implementation
或runtimeOnly
) -
贡献 DSL 元素(如
application {}
或publishing {}
)
插件使用 plugins
块(Kotlin DSL 或 Groovy DSL)应用于构建脚本,它们带来了特定领域或工作流所需的所有逻辑。
常用插件
以下是一些流行的插件及其功能
- Java 库插件(
java-library
) -
编译 Java 源代码,生成 Javadoc,并将类打包成 JAR。添加了
compileJava
、javadoc
和jar
等任务。 - Google 服务插件(
com.google.gms.google-services
) -
在 Android 构建中配置 Firebase 和 Google API。添加了
googleServices {}
等 DSL 和generateReleaseAssets
等任务。 - Gradle Bintray 插件(
com.jfrog.bintray
) -
使用
bintray {}
配置块将构件发布到 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. 本地或自定义插件(在你的构建中定义)
你也可以编写自己的插件——无论是用于单个项目还是在同一构建中的多个项目之间共享。
最常见的自定义插件类型是约定插件,它存在于 buildSrc/
目录或独立的 build-logic
模块中。这些插件用 Kotlin 或 Groovy 编写,并遵循与已发布插件相同的结构。
约定插件使用 plugins {}
块应用,就像外部插件一样
plugins {
id("my.custom-conventions")
}
要了解如何创建自己的插件,请参阅插件开发章节。
下一步: 了解增量构建和构建缓存 >>