A)
task build << {
description = "Build task."
ant.echo('build')
}
B)
task build {
description = "Build task."
ant.echo('build')
}
我注意到,对于类型B,任务中的代码似乎在键入gradle -t
时执行 - 即使只列出所有各种可用任务,也会回显“构建”。该描述实际上也以类型B显示。但是,对于类型A,在列出可用任务时不执行代码,并且在执行gradle -t
时不显示描述。文档似乎没有区分这两种语法(我发现)之间的区别,只是你可以用任何一种方式定义任务。
答案 0 :(得分:56)
第一种语法定义了一个任务,并提供了一些在任务执行时要执行的代码。第二种语法定义了一个任务,并提供了一些可以立即执行以配置任务的代码。例如:
task build << { println 'this executes when build task is executed' }
task build { println 'this executes when the build script is executed' }
实际上,第一种语法相当于:
task build { doLast { println 'this executes when build task is executed' } }
因此,在上面的示例中,对于语法A,描述不会显示在gradle -t中,因为设置描述的代码在执行任务之前不会执行,这在运行gradle -t时不会发生。< / p>
对于语法B,每次调用gradle都会运行执行ant.echo()的代码,包括gradle -t
要提供执行操作和任务描述,您可以执行以下任一操作:
task build(description: 'some description') << { some code }
task build { description = 'some description'; doLast { some code } }