在学习 Groovy 的时候,第一步很顺利
task hello {
doLast {
println 'Hello world!'
}
}
在命令行里, 进入脚本所在的文件夹然后输入 gradle -q hello 来执行构建脚本:
gradle -q hello 的输出
> gradle -q hello
Hello world!
然后很开心的继续下一节
快捷的任务定义
build.gradle
task hello << {
println 'Hello world!'
}
它定义了一个叫做 hello 的任务, 这个任务是一个可以执行的闭包. 我们将使用这种方式来定义这本指南里所有的任务.
可是当我们运行的时候编译却报错了

查了很多资料,发现有如下两种解决办法
task hello {
println 'Hello world!'
}
或者
task hello {
doLast{
println 'Hello world!'
}
}
验证发现确实是可以解决问题,而且第一种方式看上去更简单,但是使用后却发现第一种方式已经改变了原来的意思,第一种当运行脚本中任何一个任务的时候其他task都会被执行,因此 第二种才是正确的做法!
gradle版本说明中也解释了,gradle 5.0中 << 已经过时了,即(<<),推荐使用doLast 来替代,也可以通过降低gradle版本来解决。
在此也给自己记录一下,遇到问题,虽然网上答案很多,还是希望以后可以找到真实的原因并解决问题。不要知其然不知其所以然。
本文探讨了在Groovy中定义Gradle任务的两种方法:使用闭包和doLast方法。详细介绍了<<操作符在Gradle 5.0中的过时及其替代方案,并解释了不当使用可能导致的任务执行错误。
8440

被折叠的 条评论
为什么被折叠?



