这个Gradle语法有什么问题?

时间:2014-07-20 12:10:06

标签: groovy gradle

我刚刚开始学习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"
}

1 个答案:

答案 0 :(得分:3)

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

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

甚至更好:

task hello {
    doLast { ... }
}

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

后一种语法更加规则,避免了在使用命名参数(例如dependsOn:)和<<时常犯的错误。