四、使用Gradle插件
Gradle本身只是一个框架,它的核心部分在构建过程中起的作用实际上很小。真正起作用的步骤来自于插件,比如编译Java代码的功能就是由“java”插件提供。
在本章中,我们会详细价绍如何使用Gradle的插件
4.1 插件能做些什么
插件可以做的事情很多,比如:
- 扩展Gradle的功能
- 根据用户的配置来做一些自定义的构建
- 增加构建多种具体项目的功能,如Android插件
使用插件有许多好处:
-
促进脚本的复用,可以减少相似的构建脚本
-
可以更好地组织项目结构
-
将具体的逻辑封装起来,然后用声明式的方式使用
4.2 插件的类型
4.2.1 脚本插件和二进制插件
Gradle的插件分为两种类型:脚本插件(script plugins)和二进制插件(binary plugins)。
脚本插件 就是额外的构建脚本,脚本插件通常用来对构建过程进行深度配置,同样遵循声明式的思想。脚本插件常常作为另一个脚本文件(即*.gradle) 文件被放置在项目目录中,以本地文件的形式应用插件。虽然脚本插件也可以放置在云端,比如说共享仓库jcenter,但不常用,一般共享的插件都是二进制插件。
二进制插件就是实现了Plugin
接口的类,可以用java、kotlin和groovy编写,更容易进行测试,还可以被打包成jar包共享出去。
一个插件项目最开始写的时候通常都是以脚本插件的形式,因为它们更容易编写,当项目变得更有价值之后再被迁移成二进制插件,这样更容易测试以及共享。
4.2.2 核心插件和社区插件
Gradle的插件根据是否内置又分为核心插件和社区插件,核心插件是Gradle必要的插件(如java
插件),核心插件随着Gradle安装已经解析好了,只需要应用即可;社区插件是共享在社区上的插件,在需要时才被解析到本地。
社区插件会被共享在一些在线仓库中,例如jcenter、Maven仓库等,Gradle还提供了一个专门共享Gradle插件的仓库:Gradle plugin portal,Gradle官方推荐将插件共享在这里。
4.3 Gradle插件的三种实现方式
(本小节仅简单介绍,实现Gradle插件的方法详见“自定义Gradle插件”章节)