Groovy概述
1.简介
Groovy语言是一种运行在java虚拟机上的脚本语言,Groovy也会被编译成JVM字节码文件,最终由JVM解释执行,因此Groovy代码可以和java代码无缝衔接,可以直接在Groovy代码中写java代码。因为Groovy是一种脚本语言,所以在使用起来很多地方都与JS比较类似
2.闭包
- Groovy中如果一个方法的最后一个参数是一个闭包,则闭包可以写在小括号的外面
- 闭包中有一个默认参数it
- 闭包中的三个参数:this,owner,delegate
- this:代表闭包定义处最近的对象,不包含闭包,不可以修改
- owner:代表闭包定义处最近的对象,包含闭包,不可以修改
- delagate:默认等于owner,可以修改
- 在闭包中可以直接访问this,owner,delegate中的方法和变量
List和Map
Groovy中的List和Map类似于js中的List和Map,相比java语言操作起来更加容易
高级操作
Json解析
Groovy语言在解析json数据的时候非常方便,类似与JS。
文件操作
Groovy语言的文件操作,也是非常简单的,其实Groovy只是在Java的输入输出流上面,又包装了一层,因此使用起来非常方便
Gradle
Gradle的生命周期
Gradle在构建的过程中,一共经历三个阶段:初始化阶段,配置阶段,执行阶段
-
初始化阶段:解析setting.gradle文件,为所有需要参与构建的工程创建Project对象
-
配置阶段:解析每个工程的build.gradle文件,生成Task的有向五环图,在配置阶段执行的代码有:
- apply方法:apply方法是向Project中引入一个Groovy插件,在Groovy插件中,一般会定义一些Task,比如我们通常引入的com.android.application插件中就是定义了Android打包成apk相关的task
- Task的定义与配置:我们经常会在build.gradle文件中定义一些Task,并且通过闭包的形式,为这些task初始化一些参数,这个闭包就是配置阶段执行的,只有Task的action或者doFirst或者doLast是在执行阶段执行的
-
执行阶段:Gradle的执行阶段就是执行在配置阶段创建好的所有Task,Gradle将打包过程分成了很多了小的Task,当所有的Task执行完了,打包也就结束了
Project对象
Gradle会为每一个需要参与构建工程创建一个Project对象,每一个工程都有一个自己build.gradle,在build.gradle文件中,可以直接调用project的方法,比如我们通常在添加依赖的时候,使用的dependencies就是project中的一个方法,project中常见的api有:
- Task相关:创建一个task
- subProjects:访问子Project
- 依赖相关dependencies
- 文件操作相关
- 执行外部命令相关
- 属性操作相关,通常可以在gradle.properties文件中配置一些属性,在build.gradle中可以直接访问
具体方法含义可以在as里面直接查看方法说明
Task
gradle在构建的执行阶段,就是在执行一些创建好的Task,因此我们可以定义自已的Task做一些特殊操作,然后交给Gradle执行。
创建Task创建的两种方法:
- 直接调用Project的方法
- 通过Project对象的Task容器创建Task
Task可以定义输入和输出,输入可以是属性或者文件,输出只能是文件,如果TaskA的输入是TaskB的输出,那么即使这两个Task没有依赖关系,TaskB也会在TaskA之前执行的