插件分类
Gradle插件分为二进制插件和脚步插件
二进制插进:实现了org.gradle.api.Plugin接口的插件,插件可以有plugin ID(是唯一的,plugin id是插件的别名),Gradle自带的核心插件都有一个plugin id
插件作用
当把插件应用到项目,插件会扩展项gr目功能,帮助在项目构建过程中做许多事情:
- 可以添加任务到项目,帮你完成测试、编译、打包等
- 可以添加项目构建过程中需要的依赖配置到项目,比如编译时依赖的第三方库等;
- 可以向项目中现有的对象类型添加新的扩展属性、方法等,比如Android{}配置块就是Android Gradle插件为Project对象添加的一个扩展
- 对项目进行约定,比如应用Java插件,约定src/main/java目录下为源代码,编译的时候也编译这个目录下的java源代码文件
如何应用插件到项目
插件的应用都是通过project.apply(Map
1、应用二进制插件
//’java’就是java插件的plugin ID
*方式一:***apply plugin:’java’
//org.gradle.api.plugins.JavaPlugin是Java插件的类型
*方式二:***apply plugin:’org.gradle.api.plugins.JavaPlugin’
//由于org.gradle.api.plugins包是自动导入的
*方式三:***apply:’JavaPlugin’
方式一最常见,完整的插件类型写法一般适用于我们在build文件中自定义的插件,也就是脚步插件;
2、应用脚本插件
脚本插件就是一个脚本,应用脚本插件就是把这个脚本加载进来,和二进制插件不同的是脚本插件使用的是from关键字,后面紧跟的是一个脚本文件,可以使本地的,也可以使网络的(网络的要使用HTTP URL) 形如:apply from:…
脚本插件虽然不是真正的插件,但他是脚本文件模块化的基础;我们可以将庞大的脚本文件进行分块、分段整理拆分为一个个单一职责的的文件,然后使用apply from来引用这些脚本文件,比如:将常用函数都放在utils.gradle文件中,供其他脚本文件引用
Project.apply()方法的另外两种形式
1、apply(Closure closure)
apply{
plugin 'java'
}
该闭包用来配置一个ObjectConfigurationAction对象,在闭包中可以使用该对象的方法、属性等进行配置;效果和apply plugin:’java’一样
2、apply(Action
应用第三方发布的插件
第三方发布的作为jar的二进制插件,在应用是,必须先在buildscript{}里配置其classpath才能使用,这点不像Gradle提供的内置插件。比如Android Gradle插件,就属于Android发布的第三方插件,需要先配置:
buildscript{
dependencies{
classpath 'com.android.tools.build:gradle:1.5.0'
}
}
buildscript{}块是一个在构建项目之前,为项目进行前期准备和初始化相关配置依赖的地方,配置好所需依赖,就可以应用插件了