A)
task build << {
description = "Build task."
ant.echo('build')
}
B)
task build {
description = "Build task."
ant.echo('build')
}
Я замечаю, что с типом B, код в задаче, кажется, выполнен при вводе gradle -t
- эхо муравья 'создает', просто перечислив все различные доступные задачи. Описание также на самом деле отображено с типом B. Однако с не вводят код, выполняется при списке доступных задач, и описание не отображено при выполнении gradle -t
. Документы, кажется, не входят в различие между этими двумя синтаксисами (что я нашел), только что можно определить задачу так или иначе.
Первый синтаксис определяет задачу и предоставляет некоторый код для выполнения при выполнении задачи. Второй синтаксис определяет задачу и предоставляет некоторый код, который нужно сразу выполнить для настройки задачи. Например:
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 } }