-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlifecycle.gradle
More file actions
61 lines (54 loc) · 2.35 KB
/
lifecycle.gradle
File metadata and controls
61 lines (54 loc) · 2.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/**
* 演示了生命周期的监听方法
* 参考:https://www.heqiangfly.com/2016/03/18/development-tool-gradle-lifecycle/
*/
project.subprojects { sub ->
//在 project 开始配置前调用,当前的 project 作为参数传递给闭包。
// 这个方法很容易误用,你要是直接当前子模块的 build.gradle 中使用是肯定不会调用到的,
// 因为Project都没配置好所以也就没它什么事情,这个代码块的添加只能放在父工程的 build.gradle 中,如此才可以调用的到。
sub.beforeEvaluate { pro ->
println "#### beforeEvaluate of " + pro.path
}
//只要 project 配置成功均会调用,不论是在父模块还是子模块
sub.afterEvaluate { pro ->
println("#### Evaluate after of " + pro.path)
}
}
project.afterEvaluate { pro ->
println("#### Evaluate after of " + pro.path)
}
// 设置一个 project 配置前执行的闭包
// 子模块的该方法声明在 root project 中回调才会执行,root project 的该方法声明在 settings.gradle 中才会执行。
gradle.beforeProject { project ->
println "#### before project " + project
}
// 设置一个 project 配置完毕后立即执行的闭包或者回调方法。
// afterProject 在配置参数失败后会传入两个参数,前者是当前 project,后者显示失败信息。
gradle.afterProject { project, projectState ->
if (projectState.failure) {
println "Evaluation afterProject of " + project + " FAILED"
} else {
println "Evaluation afterProject of " + project + " succeeded"
}
}
// 构建结束时的回调,此时所有的任务都已经执行,一个构建结果的对象 BuildResult 作为参数传递给闭包
gradle.buildFinished { r ->
println("buildFinished "+r.failure)
}
//所有的 project 都配置完成后的回调,此时,所有的project都已经配置完毕,准备开始生成 task 图。gradle 对象会作为参数传递给闭包。
gradle.projectsEvaluated {gradle ->
println("projectsEvaluated")
}
/**
* 因此,生命周期回调的执行顺序是:
* gradle.settingsEvaluated->
* gradle.projectsLoaded->
* gradle.beforeProject->
* project.beforeEvaluate->
* gradle.afterProject->
* project.afterEvaluate->
* gradle.projectsEvaluated->
* gradle.taskGraph.graphPopulated->
* gradle.taskGraph.whenReady->
* gradle.buildFinished
*/