示例一:tutorial\excludeTasks
代码:
task compile << {
println 'compiling source'
}
task compileTest(dependsOn: compile) << {
println 'compiling unit tests'
}
task test(dependsOn: [compile, compileTest]) << {
println 'running unit tests'
}
task dist(dependsOn: [compile, test]) << {
println 'building the distribution'
}
看着这几个任务,是不是有点晕?我是这感觉!上述代码其实是人物之间有一个相互依赖的关系,一个任务可以依赖一个task,也可以依赖多个。task依赖的语法可以看做这样:
task NameA(dependsOn:NameB)//单任务依赖
task NameD(dependsOn:[NameA,NameB,NameC]) //多任务依赖
如何看这个任务的任务结构呢?执行命令
gradle tasks --all
看结果:
tasks - Displays the tasks runnable from root project 'excludeTasks'.
Other tasks
-----------
dist
compile
compileTest
test
BUILD SUCCESSFUL
Total time: 3.838 secs
示例二:tutorial\defaultTasks
代码:
defaultTasks 'clean', 'run'
task clean << {
println 'Default Cleaning!'
}
task run << {
println 'Default Running!'
}
task other << {
println "I'm not a default task!"
}
由于在文件开头,使用了属性defaultTasks,指定了默认的任务,所以在执行时,可以这么执行
gradle
不需要指定特定的任务,即可运行默认的任务,默认是按默认任务的列表顺序执行的。defaultTasks是Project的属性,可以从api里找到file:///D:/Java/Gradle/gradle-2.8/docs/dsl/org.gradle.api.Project.html#org.gradle.api.Project:defaultTasks
示例三:tutorial\disableTask
代码:
task disableMe << {
println 'This should not be printed if the task is disabled.'
}
disableMe.enabled = false
如果执行上面的任务,我们会得到什么结果呢?
>gradle disableMe
:disableMe SKIPPED
BUILD SUCCESSFUL
很可惜,什么都没有!原因是给task加了个属性,直接跳过了!task有多少属性呢?我的sdk在这里
file:///D:/Java/Gradle/gradle-2.8/docs/dsl/org.gradle.api.Task.html,关于属性enabled,有这样一个解释:
boolean enabled
Returns if this task is enabled or not.
返回类型为boolean,设置该task能否执行。在任务块里,可以直接调用task的属性
任务四:tutorial\count
代码:
task count << {
4.times { print "$it " }
}
分析:该任务count 调用了一个默认方法,times{}, 进行遍历, $it ,注意it是代表整数,如果是整数,不能用其他代码!这个it在gradle里为整数型! 这里有个困惑,在查找api中没有找到这个方法的位置,如果您知道,希望您给予知道,不胜感激!
补充一点关于times的使用心得:
下面是我自己随意写的gradle,对times的使用进行了扩展,代码如下:
task dd << {
5.times{
dddddd -> println("ddddddddd:"+dddddd)
println("aaaaaaaaaaaaaaaaaaaaaaaaaaaaa:$dddddd")
}
}
其中,dd为任务名,dddddd是我随意起的遍历次数的变量名, 使用”->“ 进行了变量的声明,而且只能声明一次,符号”->”是必须的! 这个地方我是根据代码改写的,没有找到理论基础,如果您知道,希望您给予知道,不胜感激!*
任务五:tutorial\lazyDependsOn
代码:
下面的代码作用是延时依赖,或者叫懒依赖,就是先确定依赖任务,不管该任务存不存在。如果不存在,后面再进行创建!
task taskX(dependsOn: 'taskY') << {
println 'taskX'
}
task taskY << {
println 'taskY'
}
分析: 创建这种依赖,所依赖的任务名先确定,使用''
单引号来包裹这个任务名,这个任务可以在引用后面再进行创建!!!