Gradle Task Graphs

Gradle在执行任务之前,会先构建任务图(有向无环图)。因此Gradle会跳过不属于当前构建的任务。

Build Phases

Gradle构建分为三个阶段:初始化、配置、执行阶段。

Initialization

  • 查询settings文件。
  • 计算setting,确定那些项目和builds参与构建。
  • 为每一个项目创建一个Project

Configuration

  • 计算参与构建的每个项目的bulid scripts
  • 为所有要求的任务创建一个任务图。

Execution

  • 按照任务依赖的顺序安排和执行任务。

Initialization

查找项目的settings文件,计算settings文件。在这个期间Gradle会将库添加到build script类路径,定义哪些被包含的builds参与构建。在这之后,Gradle会为每个build创建一个Project,名字就是build上层目录的名字。

Configuration

在配置期间,Gradle把任务和其他初始化阶段生成项目配置文件添加进去,最后会完成一个任务执行图。

项目计算通知

  • gradle.beforeProject,在项目开始计算之前通知。
  • gradle.afterProject,在项目计算完成后通知。

任务图计算完成通知

  • gradle.taskGraph.whenReady,在项目任务图计算完成后通知。
  • gradle.taskGraph.addTaskExecutionGraphListener,在项目任务图计算完成后通知。

任务添加后通知

  • tasks.whenTaskAdded,当任务被添加后通知。

Execution

任务执行通知

  • gradle.taskGraph.beforeTask,在任务执行前通知。
  • gradle.taskGraph.afterTask, 在任务执行完后通知。