Gradle 基于插件系统构建。Gradle 本身主要由基础设施组成,例如复杂的依赖解析引擎。其功能的其余部分来自插件。
插件是一段软件,它为 Gradle 构建系统提供附加功能。
可以将插件应用到 Gradle 构建脚本,以添加新任务、配置或其他与构建相关的功能
- Java 库插件 -
java-library
-
用于定义和构建 Java 库。它使用
compileJava
任务编译 Java 源代码,使用javadoc
任务生成 Javadoc,并使用jar
任务将编译后的类打包到 JAR 文件中。 - Google 服务 Gradle 插件 -
com.google.gms:google-services
-
使用名为
googleServices{}
的配置块和名为generateReleaseAssets
的任务在 Android 应用程序中启用 Google API 和 Firebase 服务。 - Gradle Bintray 插件 -
com.jfrog.bintray
-
允许你通过使用
bintray{}
块配置插件将制品发布到 Bintray。
插件分发
插件以三种方式分发
-
核心插件 - Gradle 开发并维护一组 核心插件。
-
社区插件 - Gradle 社区通过 Gradle 插件门户 共享插件。
-
本地插件 - Gradle 使用 API 允许用户创建自定义插件。
应用插件
应用插件到项目允许插件扩展项目的容量。
您在构建脚本中使用插件 ID(全局唯一标识符/名称)和版本应用插件
plugins {
id «plugin id» version «plugin version»
}
1. 核心插件
Gradle 核心插件是一组包含在 Gradle 发行版本身中的插件。这些插件为构建和管理项目提供基本功能。
核心插件的一些示例包括
-
java:提供构建 Java 项目的支持。
-
groovy:添加对编译和测试 Groovy 源文件的支持。
-
ear:添加对构建企业应用程序的 EAR 文件的支持。
核心插件的独特之处在于,它们提供短名称,例如在构建脚本中应用核心 JavaPlugin 时,使用 java
。它们也不需要版本。要将 java
插件应用到项目
plugins {
id("java")
}
用户可以利用许多 Gradle 核心插件。
2. 社区插件
社区插件是由 Gradle 社区开发的插件,而不是核心 Gradle 发行版的一部分。这些插件提供可能特定于某些用例或技术的附加功能。
Spring Boot Gradle 插件 打包可执行 JAR 或 WAR 存档,并运行 Spring Boot Java 应用程序。
要将 org.springframework.boot
插件应用到项目
plugins {
id("org.springframework.boot") version "3.1.5"
}
社区插件可以在 Gradle 插件门户 发布,其他 Gradle 用户可以在此轻松发现和使用它们。
3. 本地插件
自定义或本地插件在特定项目或组织中开发和使用。这些插件不会公开共享,并且根据项目或组织的特定需求进行定制。
本地插件可以封装常见的构建逻辑,提供与内部系统或工具的集成,或将复杂功能抽象为可重用组件。
Gradle 为用户提供了使用 API 开发自定义插件的能力。要创建您自己的插件,您通常需要遵循以下步骤
-
定义插件类:创建一个实现
Plugin<Project>
接口的新类。// Define a 'HelloPlugin' plugin class HelloPlugin : Plugin<Project> { override fun apply(project: Project) { // Define the 'hello' task val helloTask = project.tasks.register("hello") { doLast { println("Hello, Gradle!") } } } }
-
构建并选择性发布您的插件:生成一个包含您的插件代码的 JAR 文件,并选择性地将此 JAR 发布到一个存储库(本地或远程),以便在其他项目中使用。
// Publish the plugin plugins { `maven-publish` } publishing { publications { create<MavenPublication>("mavenJava") { from(components["java"]) } } repositories { mavenLocal() } }
-
应用您的插件:当您要使用插件时,在构建文件的
plugins{}
块中包含插件 ID 和版本。// Apply the plugin plugins { id("com.example.hello") version "1.0" }
查阅 插件开发章节 以了解更多信息。
下一步: 了解增量构建和构建缓存 >>