从Gradle生命周期到自定义Task挂接到Build构建流程全解

本文详细介绍了Gradle的构建生命周期,包括初始化、配置和执行阶段,重点讲解了如何监听初始化过程、配置阶段的代码执行以及Task依赖关系的配置。同时,探讨了Gradle的Hook点和如何指定Task执行顺序,包括静态和动态依赖的设定。通过对Gradle生命周期的理解,可以更好地管理和扩展项目的构建流程。
摘要由CSDN通过智能技术生成

Gradle的构建过程有着固定的生命周期,理解Gradle的生命周期和Hook点,有助于帮你梳理、扩展项目的构建流程。

一、Gradle 构建生命周期

=============================================================================


Gradle的构建过程有着固定的生命周期,分别是:

  1. 初始化阶段

  2. 配置阶段

  3. 执行阶段

下面就详细介绍一下这三个阶段都做了什么事情。

1、初始化阶段



初始化阶段的主要任务:就是创建项目的层次结构,并为每一个项目创建一个Project 实例对象。

在初始化阶段中,会执行 settings.gradle 脚本,并读取 settings.gradle 中的 include 信息,进而为每一个工程(即build.gradle 脚本文件)创建一个与之对应的 Project 对象,最终形成一个项目的层次结构。 一个 settings.gradle 脚本对应一个 Settings 对象(在Gradle 初始化的时候创建),而我们最常用来声明项目的层次结构的 include标签 就是 Settings 类下的一个方法,Settings 类还有如下方法,都可以直接在 settings.gradle 文件中直接访问:

image-20210623102804182

1-1、应用其它工程的模块

比如:通过 include 和 project 方法,可以实现引用任何位置下的工程模块:

include ‘:myjson’ // 需要参与构建的模块名称

project(’:myjson’).projectDir = file(’/Users/WorkSpace/AndroidDemo/MyJson/myjson’)

  • include方法 :指定参与构建的模块的名称,模块名前需要加冒号(:),模块名称可以任取。

  • project方法:加载指定的模块,并为该模块设置一个工程路径,参数必须与include参数一致 。

这样本工程就可以引用到其它位置的模块了,如果引用的是一个 library 模块,那么在本工程的模块中,就可以依赖这个 library 模块了,如:

implementation project(":myjson")

1-2、监听初始化过程

在上面的 Settings 类的方法列表中,有一个 getGradle() 方法,返回一个 Gradle 对象,通过这个 Gradle 对象,我们可以监听 Gradle 构建过程中 各个生命周期方法的回调,如在 settings.gradle 文件中,增加如下监听:

gradle.addBuildListener(new BuildListener() {

void buildStarted(Gradle var1) {

println ‘buildStarted()->开始构建’

}

void settingsEvaluated(Settings var1) {

println ‘settingsEvaluated()->settings评估完成(settins.gradle中代码执行完毕)’

// var1.gradle.rootProject 这里访问Project对象时会报错,还未完成Project的初始化

}

void projectsLoaded(Gradle var1) {

println ‘projectsLoaded()->项目结构加载完成(初始化阶段结束)’

println ‘pr

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值