update time:2019-1-10 Author:要你命三千又三千 type:学习笔记
setting 文件(默认文件名:setting.gradle)
- 作用:初始化以及工程树的配置
- 位置:在根工程目录下
- 大多数的作用:配置子工程
gradle 中的多工程是通过工程树表示的。
根工程相当于Project ,子工程相当于Moudle .
作用形式:子工程只有在setting文件里配置了,才会识别构建时才会将它包含进去
build文件
作用:该project的构建入口,针对该project进行配置
1.Root Project 也有build文件
2.Toot Project可以获取所有的Child Project ,所以可以在Root Project 中的Build 文件中对Child Project 进行统一配置。
3.好处:方便的对子工程进行统一配置。
(allproject) subproject 对工程进行遍历,遍历的过程调用我们自定义的闭包。
Project 和Task 任务
什么是Project
由来:根据项目抽象出来的一个个独立的模块,你可以根据项目的情况抽象归类,最后一个个的Project 组成了Gradle 构建。(从编程角度讲就是一个个独立的模块)
什么是Task
一个Project 包含多个Task ,每个Project 有多个Task 组成。
举例
task customTask1 {//task 是一个Project 的函数,原型为create(String
//namem,Closure configureClosure)
//customTask1 为任务名
// 后面的闭包为另外一个参数。
//由来:groovy 可以省略函数括号(没有了括号),最后一参数为闭
//包可以放在括
//号外面(没有了逗号)
doFirst{ //这里我理解为回调函数doFirst(),
//doLast()任务前后调用函数(可以自定义进行覆盖(回调的好处))
println 'customTask1:doFirst'
}
doLast{
println 'customTask1:doLast'
}
}
}
这里还要一种方法方法使用TaskContainer来任务(略)
任务依赖
含义:即那些任务必须先执行,那些任务必须后执行。(某些任务执行完后,其他任务才能执行)
实现
task ex35Hello{
println 'hello'}
taskk ex35Main(dependsOn:ex35Hello){......}//通过dependsOn 里指定任务依赖
task ex35MultiTask{ //ex35MultiTask依赖ex35hello 和ex35World 任务,必须将前两个任务完成后才能执行。
dependsOn ex35Hello, ex35World
doLast{
println 'multiTask'
}}
任务间的交互(相互访问)
这里将任务名看做变量名,
调用任务的方法
关于Project 有多个任,代码层的含义为:(定义为一个任务,即将该任务对应的任务名注册为project一个属性。)
自定义属性
通过ext自定义project 和Task的自定义属性(这里的自定义属性默认是public,访问的到对象,即可访问到属性)
补充一点:sourceSets.all 返回所有:every element in a collection (sourceSets.all in this case), and returns a collection of the results.(参考网址)
举例: