Каково различие между этими синтаксисами определения задачи в gradle?

A)

task build << {  
  description = "Build task."  
  ant.echo('build')  
}

B)

task build {  
  description = "Build task."  
  ant.echo('build')  
}

Я замечаю, что с типом B, код в задаче, кажется, выполнен при вводе gradle -t - эхо муравья 'создает', просто перечислив все различные доступные задачи. Описание также на самом деле отображено с типом B. Однако с не вводят код, выполняется при списке доступных задач, и описание не отображено при выполнении gradle -t. Документы, кажется, не входят в различие между этими двумя синтаксисами (что я нашел), только что можно определить задачу так или иначе.

42
задан Jared Burrows 26 October 2014 в 01:55
поделиться

1 ответ

Первый синтаксис определяет задачу и предоставляет некоторый код для выполнения при выполнении задачи. Второй синтаксис определяет задачу и предоставляет некоторый код, который нужно сразу выполнить для настройки задачи. Например:

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 } }
56
ответ дан 26 November 2019 в 23:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: