这一章我们重点说一下task任务的快捷方式doLast(符号 <<),在build.gradle文件中存在多个任务时,doLase(符号<<)的作用,以及在dos环境下出现的中文乱码问题。
doLast
- 首先我们来看看doLast和<<的区别:
//doLast代码编写方式
task dolastTask{
doLast{
println "doLast快捷方式编码"
}
}
//<<简化代码
task symbolTask << {
println "<< 快捷方式编码"
}
由以上代码和执行结果我们可以发现,doLast和<<的去边主要在代码编写上,<<简化了代码的编写,所以推荐使用;
注:以下代码都以<<来实现快捷方式
- 快捷方式的作用:
//doLast代码编写方式
task dolastTask{
doLast{
println "doLast快捷方式编码"
}
}
//<<简化代码
task symbolTask << {
println "<< 快捷方式编码"
}
task t1{
println 'task t1'
}
task t2{
println 'task t2'
}
task t3{
println 'task t3'
}
由以上结果我们可以发现,如果不使用快捷方式,当执行1:
gradle -q
gradle按照顺序执行代码,并且只执行没有设置快捷方式的任务;
当执行2:
gradle -q t1
gradle -q t2/t3
我们得到的结果都是按照顺序执行代码,并且只执行没有设置快捷方式的任务;
当我们执行快捷任务:
gradle -q dolastTask
我们会发现不管当前快捷任务处于代码文件的什么位置,都是先顺序执行没有设置快捷方式的的任务然后再执行当前要执行的快捷任务;
- 快捷任务在任务以来中的作用
task t4(dependsOn:t1){
println 'task t4'
}
1.如果在未使用快捷方式的任务中依赖了未使用快捷方式的任务,那么依赖关系实际上是没有起到依赖的真正作用,我们调整代码的顺序,将t1放在t4的后面,看执行结果:
我们会看到当执行t4时会报错,那是因为t1还没有执行导致的,但是我们发现如果t1任务在t4任务之前时,会顺利执行完成,所以说依赖关系实际上跟顺序有关;
2.如果未使用快捷方式的任务依赖以使用快捷方式的任务,调整代码,将t1设置成使用快捷方式:
命令1执行成功,但是顺序却发生变化,先执行了为标记位快捷方式的任务,后执行了依赖的标记为快捷方式的任务;
调整t1位置到t4后面,发现执行报错;
3.使用快捷方式的任务,依赖于未使用快捷方式的任务,正常执行,跟顺序和代码位置没有关系,属于正常情况。
4.使用快捷方式的任务依赖于使用了快捷方式的任务,和3一样也是正常情况;
中文乱码问题解决
以Notepad++编辑器为例,在Notepad++中我们必须设置文件的编码格式为"以UTF-8无BOM格式编码",才能防止在dos命令下出错,其他的设置编码格式的方式:
+G编译groovy代码时采用 UTF-8:
tasks.withType(GroovyCompile) {
groovyOptions.encoding = "MacRoman"
}
+编译JAVA文件时采用UTF-8
tasks.withType(Compile) {
options.encoding = "UTF-8"
}