鸿蒙 hvigor 构建任务依赖与生命周期简介
Hivgor 脚本文件
在构建的生命周期中 Hvigor 使用两个脚本文件来完成插件、任务以及生命周期 hook 的注册:
hvigorconfig.ts:此文件在整个项目中只有根目录下存在一份,不是构建必须的文件并且默认不存在,如有需要可自行创建,此文件被解析执行的时间较早,可用于在 Hvigor 生命周期刚开始时操作某些数据。
hvigorfile.ts:此文件在每个 node 下都有一份,是构建的必须文件,在此文件中可以注册插件、任务以及生命周期 hook 等操作。
任务与任务依赖图
Hvigor 是基于任务对您的项目进行自动化构建的,任务(Task)是 Hvigor 构建过程中的基本工作单元,它定义了构建项目时需要执行的具体工作。任务可以完成多种操作,比如源码编译任务,打包任务或签名任务等。每一种任务的执行逻辑由插件(plugin)提供,插件可以是由 hvigor-ohos-plugin 提供的默认任务逻辑,也可由您个性化定制。
需要注意的一点是,任务是存在依赖关系的,Hvigor 在执行任何任务之前会构建任务依赖图,所有任务会形成一个有向无环图(DAG),如下示例图,任务之间的依赖关系用箭头进行表示:
hvigor 插件(hvigor-ohos-plugin)和 hvigorfile.ts 文件中的构建脚本都将通过任务依赖机制对任务依赖图做出影响。
hvigor-ohos-plugin
hvigor-ohos-plugin 是默认的构建插件,为任务(Task)的完成提供业务逻辑支持,比如为 Hvigor 提供 Hap、Har 和 Hsp 打包服务等任务,每一种任务的具体执行逻辑由本模块中不同的插件来提供。
Hvigor 与 hvigor-ohos-plugin 的关系
概述部分提到了 Hvigor 提供任务注册编排以及配置管理等任务管理机制,它负责控制任务的执行流程,但是并不包含每一个任务的具体业务逻辑,具体逻辑是由 hvigor-ohos-plugin 提供的。
Hvigor 和 hvigor-ohos-plugin 的关系可以通过下图来说明,Hvigor 接受任务的注册并编排任务执行顺序,并按照顺序依次调用 hvigor-ohos-plugin 中的插件来执行任务。如果您定制了自己的任务逻辑插件并将其注册,hvigor-ohos-plugin 也会调用您的个性化插件来完成编译构建流程。
在 Hvigor 执行构建的过程中,hvigor-ohos-plugin 会向 Hvigor 进行任务的注册,Hvigor 会根据构建的任务执行有向图依次调用对应的插件来执行相应任务,在完成编译、打包、签名等一系列任务后,Hvigor 也就正式完成了构建。
Hvigor 生命周期
生命周期展示了 Hvigor 编译构建系统如何进行一次完整的编译构建流程。Hvigor 的编译构建过程有三个不同的阶段,分为初始化、配置和执行,Hvigor 会按顺序运行这些阶段。
初始化:此阶段主要目的为初始化项目的编译参数,构造出项目结构的树形数据模型,每个 node 为一个 HvigorNode 对象。
配置:此阶段开始时,所有的 node 都已经加载完毕,但每个 node 中还没有加载插件(plugin)、任务(task)和 DAG 图,此阶段的主要目的就是加载出这些内容。
执行:任务之间的依赖关系决定了任务执行顺序,任务可以并行执行
生命周期及 hook 点
在 Hvigor 的生命周期中,以下多个 hook 点可供您使用,便于您在对应的时机调用某些逻辑。在下图中所有绿色标记的线框为可以使用的 hook 点
版权声明: 本文为 InfoQ 作者【龙儿筝】的原创文章。
原文链接:【http://xie.infoq.cn/article/890734e94850828aea30ff56d】。文章转载请联系作者。
评论