二进制插件可以驻留在构建脚本中、项目层次结构中或外部插件 jar 包中。
- 脚本插件
脚本插件是额外的构建脚本,可以进一步配置构建并且通常实现一种声明性的方法来操作构建。它们通常在构建中使用,尽管它们也可以外部化并从远程位置访问。
插件通常以脚本插件开始(因为它们易于编写),然后随着代码变得更有价值,它被迁移到可以在多个项目或组织之间轻松测试和共享的二进制插件。
使用插件
要使用插件中封装的构建逻辑,Gradle 需要执行两个步骤。 首先,解析插件,然后需要将插件应用到一个目标上,通常是一个 org.gradle.api.Project
对象。
- 解析插件
解析插件的工作是找到包含给定插件的正确版本的 jar 并将其添加到脚本类路径中。一旦一个插件被解析,它的 API 就可以在构建脚本中使用。
- 应用插件
应用插件意味着在要使用插件的项目上实际执行插件的Plugin.apply(T
。应用插件是_幂等_的。也就是说,您可以安全地多次应用任何插件而不会产生副作用。
本篇文章主要介绍如何实现一个二进制插件。
实现一个插件
最简单的构建 Gradle 插件的方式是 通过命令来构建:
gradle init // or ./gradlew init
执行命令:
- 第一步,选择项目类型,4 是 Gradle 插件项目。
- 第二步,选择实现芋圆,这里主要是 插件的代码语言,支持 Groovy、Java 和 Kotlin。
- 第三步,选择 DSL 语言(构建脚本语言),支持 Groovy 和 Kotlin。
- 第四步,输入项目名称和插件包名。
最后会显示构建结果。 构建完的项目结构是这样的:
这里有很多不需要的文件目录,包括用来测试和 Gradle 的一些相关内容,都可以删除(当然你也可以不处理),因为当我们把这个项目引入到一个 Android 项目中时,Android 项目提供了 Gradle 相关文件。
如图所示,ExamplePlugin 目录下 gradle 相关的文件,在 Android 的根目录中都存在。 其中构建插件相关的内容都在 build.gradle 文件中,首先是,插件项目引用的插件:
plugins {
id &#