Gradle简介及生命周期

808 阅读3分钟

系列文章往这看

gradle入门以及环境搭建

gradle入门之元编程

gradle入门之Groovy语法

gradle简介及生命周期

gradle核心之project

如何自己动手撸一个Gradle插件

gradle中的Transform是什么?

Gradle简介

gradle主要是由三个部分组成。

  • groovy 核心语法:包括 groovy 基本语法、闭包、数据结构、面向对象等等。前面我们已经介绍过了。
  • Android DSL(build scrpit block):Android 插件在 Gradle 所特有的东西,我们可以在不同的 build scrpit block 中去做不同的事情。
  • Gradle api:包括task,projects,setting等等。

具体如下图:
image

Gradle优势

  • 灵活性:相对于 Maven、Ant 等构建工具,Gradle 提供了一系列的 API 让我们有能力去修改或定制项目的构建过程。
  • 粒度性:源码的编译,资源的编译,都是一个一个Task的,我们可以修改task来达到精细控制上。
  • 扩展性:Gradle 支持插件机制,所以我们可以复用这些插件,就如同复用库一样简单方便。
  • 兼容性:Gradle 不仅自身功能强大,而且它还能兼容所有的Maven、Ant功能,也就是说,Gradle 吸取了所有构建工具的长处。

Gradle生命周期

gradle的生命周期主要是如下三个部分:

  • 初始化阶段: 解析setting.gradle文件
  • 配置阶段:解析所有的projects对象中的task,主要解析各个project下的build.gradle文件
  • 执行阶段:执行project下具体的的task及其依赖task

接下来我们看下gradle的流程图:
image

将上面流程可以再细化一下,细化之后如下图:
image

初始化阶段

初始化主要是读取setting.gradle文件中include的projects数量。我们可以通过如下命令查看project数量。

./gradlew project

输出如下:

------------------------------------------------------------
Root project
------------------------------------------------------------
Root project 'APMProjetct'
+--- Project ':apm'
+--- Project ':app'
\--- Project ':aspectj'

配置阶段

配置阶段主要是构造各个project下的task依赖关系图,需要注意的是,执行任何Gradle命令,在初始化阶段和配置阶段的逻辑都会被执行。

执行阶段

配置完成后,便是依次执行指定的task以及依赖的task。

生命周期的监听

在root project的build.gradle中添加如下代码:

/**
 * 配置阶段开始前的监听回调
 */
this.beforeEvaluate {
}

/**
 * 配置阶段后的监听回调
 */
this.afterEvaluate {
    println '配置阶段执行完毕...'
}

/**
 * gradle执行完毕后的回调
 */
this.gradle.buildFinished {
    println '执行阶段执行完毕...'
}


//等同于 beforeEvaluate
this.gradle.beforeProject {

}

//等同于 afterEvaluate
this.gradle.afterProject {
}

构建后,输出如下:

> Configure project :
配置阶段执行完毕...

CONFIGURE SUCCESSFUL in 0s
执行阶段执行完毕...

总结

本文主要是让你对gradle有一个初步对认识,以及gradle的生命周期。接下来我们会介绍最常用project以及task

参考

暴力突破 Gradle 自动化项目构建(五)- Gradle 核心之 Project
Gradle系列之三 Gradle概述以及生命周期

本文首发于我的个人博客:Gradle简介及生命周期

更多文章请关注我的公众号:码农职场