任务入门
在我们的主module下的build.gradle中定义一个任务
task hello{
println 'Hello,World!'
}
命令行执行任务:
从输出结果来看,你可能觉得该任务执行了,实际上“Hello,World!”在执行该任务之前就已经被打印出来了,我们知道在任一gradle构建中,都有三个阶段:初始化阶段、配置阶段、执行阶段,如果像上面代码那样定义一个任务的话,你实际上是设置了任务的配置,即使你执行了不同的任务,“Hello,World!”也会输出来
验证一下:
task hello{
println 'Hello,World!'
}
task weixin{
println 'weixin'
}
看下输出:
如果你是想在任务执行阶段给任务添加一个动作,可以这样定义任务:
task hello << {
println 'Hello,World!'
}
task weixin << {
println 'weixin'
}
通常定义一个任务的方式有下面几种:
task hello << {
println 'Hello'
}
task(hello1) <<{
println 'Hello1'
}
task('hello2') <<{
println 'Hello2'
}
tasks.create(name:'hello3') <<{
println 'Hello3'
}
任务剖析
Task接口是所有任务的基础,它定义了一系列的属性和方法,所有这些都是由一个叫作DefaultTask的类实现的,这是标准的任务实现方式,你创建的每一个新的任务都是基于DefaultTask的。
https://docs.gradle.org/current/javadoc/org/gradle/api/DefaultTask.html
每个任务都包含一个集合,集合中存放的是Action对象,当一个任务被执行时,所有的这些Action会以连续的顺序被执行,你可以使用doFirst()和doLast()方法为一个任务添加Action,这些方法都是以一个closure作为参数被包装到一个Action对象中的。
之前使用的<<就是doFirst()方法的简写。