Gradle的核心并没有为构建的自动化提供太多直接的帮助,更多的特性是由插件完成的。比如编译java代码也是由插件完成的。插件可以增加新的任务(比如JavaCompile
),domain对象(比如SourceSet
),约定(比如,java代码放在src/main/java
),以及一些其他的对象,也包括从其他插件扩展出来的对象。
插件的作用
把插件应用到项目中可以扩展项目的功能,它可以做以下事情:
- 扩展Gradle模型(比如增加了可以配置的新的DSL元素)
- 根据约定配置项目(增加新的任务或者配置合理的默认值)
- 应用特定的配置(增加有组织的存储库或者执行标准)
通过应用插件比直接通过构建脚本来实现的好处多多,比如:
- 提高重用性,减少在多个项目中相同构建逻辑的维护开销
- 更高程度的模块化,使得更加易于理解,更加容易组织
- 封装必要性的逻辑,构建脚本只用于声明定义
插件的类型
在Gradle中有两种插件:脚本插件和二进制插件。脚本插件是额外的构建脚本,进一步配置构建,常常用于声明一些操作构建的方法,它们通常在构建内部使用。二进制插件是实现了Plugin的类,并且通过编程方式来操作构建,二进制插件可以在构建脚本中,也可以在buildSrc中,也可以以jar的方式导入。
插件通常开始只是一个脚本插件,但是随着代码价值的增加,便会迁移成二进制插件,以便分享出来给其他人使用