Gradle 配置文件拆解

188 阅读2分钟

Gradle是什么?Gradle是Json配置文件吗?

Gradle 是一个项目自动化构建开源工具,它使用一种基于 Groovy 的特定领域语言(DSL)来声明项目设置。

buildscript {
}

void buildscript(Closure configureClosure);

buildscript({
})

buildscript{} 类似 Json 配置文件的写法,其实对应 void buildscript(Closure configureClosure) 方法,该方法接受一个闭包参数。我们可以把 buildscript{} 当做是 buildscript({}) 方法的简写。

闭包是什么?

闭包是可传递的代码块,{} 和 {} 内的代码块就是闭包,稍后将被执行。java 中实现代码块传递是将方法包在对象中,如点击事件。

Task

  • 使用方法:./gradlew taskName
  • task 的结构:
task taskName { 
    初始化代码 
    doFirst { 
        task 代码 
    } 
    doLast { 
        task 代码 
    } 
}
  • doFirst doLast 和普通代码段的区别:
  1. 普通代码段:在 task 创建过程中就会被执行,发生在 configuration 阶段
  2. doFirst() 和 doLast():在 task 执⾏过程中被执⾏,发⽣在 execution 阶段。如果⽤户没有直接或间接执⾏ task,那么它的 doLast() doFirst() 代码不会被执⾏
  3. doFirst() 和 doLast() 都是 task 代码,其中 doFirst() 是往队列的前⾯插⼊代码,doLast() 是往队列的后⾯插⼊代码
  • task 的依赖:
    可以使⽤ task taskA(dependsOn: b) 的形式来指定依赖。指定依赖后,task 会在⾃⼰执⾏前先执⾏⾃⼰依赖的 task。

Gradle 执⾏的⽣命周期

  • 三个阶段:
  1. 初始化阶段:执⾏ settings.gradle,确定主 project 和⼦ project
  2. 定义阶段:执⾏每个 project 的 bulid.gradle,确定出所有 task 所组成的有向⽆环图
  3. 执⾏阶段:按照上⼀阶段所确定出的有向⽆环图来执⾏指定的 task
  • 在各阶段之间插⼊代码:
  1. ⼀⼆阶段之间:settings.gradle 的最后
  2. ⼆三阶段之间:
afterEvaluate { 
    插⼊代码 
}