1.插件的作用
- 可以添加任务到你的项目中,帮你完成一些事情,比如测试、编译、打包。
- 可以添加依赖配置到你的项目中,我们可以通过它们配置我们项目在构建过程中需要的依赖,比如我们编译的时候依赖的第三方库等。
- 可以向项目中现有的对象类型添加新的扩展属性、方法等,让你可以使用它们帮助我们配置、优化构建,比如android{}这个配置就是Android Gradle插件为Project对象添加的一个扩展。
- 可以对项目进行一些约定,比如应用Java插件之后,约定src/main/java目录下是我们源代码存放位置,在编译的时候也是编译这个目录下的Java源码文件
2.如何应用一个插件
插件的应用都是通过Project.apply()方法完成,apply方法有好几种用法,并且插件也分为二进制插件和脚本插件。
2.1二进制插件
什么事二进制插件?二进制插件就是实现了org.gradle.api.Plugin接口的插件,它们可以有plugin id,下面我们看一下如何应用一个Java插件:
apply plugin:’java'
其中’java'是Java插件的plugin id,它是唯一的。对于Gradle自带的核心插件都有一个容易记的短名,称其为plugin id,比如这里的java,其实它对应的类型是org.gradle.api.Plugins.JavaPlugin,所以通过该类型我们也可以应用这个插件:
apply plugin:org.gradle.api.plugins.JavaPlugin
又因为包org.gradle.api.Plugins是默认导入的,所以可以去掉包名直接写为:
apply plugin:JavaPlugin
以上三种方法是等价的,不过第一种用的最多,因为它比较容易记。
二进制插件一般都是被打包在一个jar里独立发布的,比如我们自定义的插件,在发布的时候我们也可以为其制定plugin id,这个plugin id最好是一个全限定名称,就像你的包名一样,这样发布的插件plugin id就不会重复了。
2.2应用脚本插件
build.gradle
apply from:’version.gradle’
task ex<<{
println "app版本:{versionCode}"
}
version.gradle
ext{
versionName='1.1'
versionCode=1
}
其实这不能算一个插件,它只是一个脚本。应用脚本插件其实就是把这个脚本加载进来,和二进制插件不同的是它使用的是from关键字,后面紧跟的是一个脚本文件,可以是本地的,也可以是网络的,如果是网络上的话要使用HTTP URL。
虽然它不是一个真正的插件,但是不能忽略它的作用,它是脚本文件模块化的基础,我们可以把庞大的脚本文件,进行分块、分段整理,拆分成一个个共用、职责分明的文件,然后使用apply from来引用它们,比如我们可以把常用的函数放在一个utils.gradle脚本里,供其他脚本文件引用。
网友评论