Groovy 这个Gradle语法有什么问题?

Groovy 这个Gradle语法有什么问题?,groovy,gradle,Groovy,Gradle,我刚刚开始学习Groovy和Gradle,正在玩一些hello world Gradle脚本。在以下两个脚本中,第一个成功,第二个失败。有人能解释为什么吗?顺便说一句,我确实意识到这些不是“标准”Gradle语法,但它们与API匹配 这项工作: task 'hello' << { println 'Hello world!' } task 'intro', dependsOn: hello << { println "I'm Gradle" } tas

我刚刚开始学习Groovy和Gradle,正在玩一些hello world Gradle脚本。在以下两个脚本中,第一个成功,第二个失败。有人能解释为什么吗?顺便说一句,我确实意识到这些不是“标准”Gradle语法,但它们与API匹配

这项工作:

task 'hello' << {
    println 'Hello world!'
}

task 'intro', dependsOn: hello << {
    println "I'm Gradle"
}
task 'hello' << {
    println 'Hello world!'
}

task('intro', dependsOn: 'hello') << {
    println "I'm Gradle"
}

task'hello'第一个和第二个代码段都是错误的。第一个可能不会完全失败,但它没有预期的结果(任务操作被添加到
hello
而不是
intro
)。最好使用更标准的语法:

task hello << { ... }
task intro(dependsOn: hello) << { ... }

后一种语法更为规则,避免了在使用命名参数(例如
dependsOn:
)和
时出现的常见错误。我甚至没有意识到我的第一个示例的输出与第三个示例的输出不同。谢谢你指出这一点。这就清楚了为什么需要括号。我喜欢后一个示例的语法。谢谢你的快速回复。
task hello << { ... }
task intro(dependsOn: hello) << { ... }
task hello {
    doLast { ... }
}

task intro {
    dependsOn hello
    doLast { ... }
}