Первый синтаксис определяет задачу и предоставляет некоторый код, который должен быть выполнен при выполнении задачи. Второй синтаксис определяет задачу и предоставляет некоторый код, который должен быть выполнен сразу же для настройки задачи. Например:
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 } }