我刚刚开始学习Groovy和Gradle,并且正在玩一些hello world gradle脚本。在以下两个脚本中,第一个脚本成功,第二个脚本不成功。有谁能解释为什么?顺便说一句,我确实意识到这些不是'标准'Gradle语法,但它们与API相匹配。
这有效:
task 'hello' << {
println 'Hello world!'
}
task 'intro', dependsOn: hello << {
println "I'm Gradle"
}
这失败了(差异是'你好'的引用):无法确定任务的依赖关系':intro'
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"
}
答案 0 :(得分:3)
第一个和第二个片段都是错误的。第一个可能不会彻底失败,但它没有达到预期的结果(任务操作被添加到hello
而不是intro
)。最好使用更标准的语法:
task hello << { ... }
task intro(dependsOn: hello) << { ... }
甚至更好:
task hello {
doLast { ... }
}
task intro {
dependsOn hello
doLast { ... }
}
后一种语法更加规则,避免了在使用命名参数(例如dependsOn:
)和<<
时常犯的错误。