首先经过文章咱们将能学习到什么?编程
下面根据总结的内容开始讲述api
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。
Gradle不只仅是一个工具,拥有本身的groovy语法,更拥有gradle api,此时不就更是一个编程框架的体现了嘛?
咱们经过下图来了解下gradle的基本组成部分bash
一、生命周期的介绍
首先咱们来看一个命令的执行过程,以mac系统为例框架
./gradlew clean
./gradlew build
复制代码
执行过程分析:
一、首先短暂的Loading阶段
二、而后执行一段时间的Configuring阶段
三、执行完Configuring后再真正执行clean或者build操做maven
Q1:在执行的时候,为何会有前面两步操做?
A1:loading和configuring其实就是gradle生命周期中的前两个工具
Q2:为何执行build操做的时候又执行了不少其余的命令?
A2:在执行clean或者是build操做的时候,其实就是在执行gradle中的Task任务,而Task之间有依赖性,因此必须将其余依赖的Task的任务先执行完成再执行自身的Task,因此咱们在控制台就会看到很大一堆的命令输出了学习
下面咱们用一张图来理解上面的执行的过程gradle
一、Loding阶段也就是初始化阶段(Initialization),也就是执行项目中的setting.gradle文件,解析该项目中的全部module,并构建出对应的project对象。ui
二、onfiguring就是配置阶段(Configration),该阶段就是解析每一个module中的build.gradle文件中的配置信息,在①和②执行的过程当中咱们能够添加一个Hook,固然这个是经过API来进行操做的。this
三、最后就是执行阶段,上面的两步是第三步执行的前提条件,也就是执行咱们最终的clean、build命令操做。你在gradle命令中指定的Task任务,gradle就会将这个Task任务链上的全部任务所有按依赖顺序执行一遍。
如今咱们最后来总结下为何在build的任务的时候会输出不少东西,见下图
二、生命周期监听
常见的监听方法
//常见的一组
/** *配置阶段开始前的监听回调 **/
this.beforeEvaluate {
println '配置阶段执行开始执行'
}
/** *配置阶段完成后的监听回调 **/
this.afterEvaluate {
println '配置阶段执行完成'
}
/** *gradle执行完成后的回调监听 **/
this.gradle.buildFinished {
println '执行阶段执行完成'
}
//另一组
this.gradle.beforeProject {}
this.gradle.afterProject {}
this.gradle.buildFinished {}
//另一组
this.gradle.addListener()
this.gradle.addBuildListener()
this.gradle.addProjectEvaluationListener()
复制代码
当前,咱们以前提到了初始化的过程,那个咱们也能够在setting.gradle文件中添加以下打印语句
println '初始化阶段开始执行'
复制代码
经过添加上面的代码后,咱们执行
./gradlew clean
复制代码
获得结果