gradle中这些任务定义语法有什么区别?
一个)
task build << { description = "Build task." ant.echo('build') }
B)
task build { description = "Build task." ant.echo('build') }
我注意到,对于typesB,即使在列出所有可用的任务时,在inputgradle -t
-ant时也会执行任务内的代码。 描述实际上也用typesB显示。但是,在typesA中,列出可用任务时不执行gradle -t
,执行gradle -t
时不显示描述。 这些文档似乎没有涉及这两个语法(我已经find)之间的差异,只是你可以任意定义一个任务。
第一个语法定义了一个任务,并提供了一些任务执行时要执行的代码。 第二个语法定义了一个任务,并提供了一些代码以便立即执行以configuration任务。 例如:
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时不会发生。
对于语法B,执行ant.echo()的代码会针对gradle的每个调用(包括gradle -t)运行
要提供执行操作和任务描述,您可以执行以下任一操作:
task build(description: 'some description') << { some code } task build { description = 'some description'; doLast { some code } }