运行构建脚本时出错:
task pullInDeps(dependsOn: copyMod, description: 'Pull in all the module dependencies for the module into the nested mods directory') {
if (pullInDeps == 'true') {
setSysProps()
def args = ['pulldeps', moduleName]
Starter.main(args as String[])
}
}
但是,运行时我没有收到错误:
task pullInDeps(dependsOn: copyMod, description: 'Pull in all the module dependencies for the module into the nested mods directory') << {
if (pullInDeps == 'true') {
setSysProps()
def args = ['pulldeps', moduleName]
Starter.main(args as String[])
}
}
注意:区别在于&lt;&lt;在定义任务时。另请注意,如果前者使用围绕doLast{}
的{{1}},则可以使用if statement
。它在使用doFirst{}
- 这是来自vert.x gradle-template-example(但将其添加到我自己的项目中)。
我真的只是想更好地理解gradle / groovy,因为我已经解决了这个问题。
编辑:
ERROR:
* What went wrong:
A problem occurred evaluating script.
> Could not find property 'Starter' on task ':pullInDeps'.
我不确定为什么leftShift
或doFrist/Last()
会对Starter产生影响。
答案 0 :(得分:2)
有关的task
有一个与它相关的动作(闭包内的逻辑),用leftShift
运算符表示。这是实际的语义:
task pullInDeps << { task action }
任务本身作为一个参数传递给闭包,以便定义一个动作。
这与doFirst { }
和doLast { }
同义,后者将任务本身作为参数。
如果您将任务定义为:
task pullInDeps { }
任务本身将被配置而不是定义任何动作,因此任务本身作为参数在闭包中不可用。
请参阅Task Actions中的第二段。