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 } }