Откуда взялся блок exec раздела doLast?

Я столкнулся с некоторым фрагментом:

task senchaCmdBuild {
  doLast {
    exec {
      workingDir 'src/main/app/MYAPP'
      commandLine 'cmd', 'c', 'sencha app build'
    }
    exec {
      workingDir 'src/main/app/MYOTHERAPP'
      commandLine 'cmd', 'c', 'sencha app build'
    }
  }
}

Это какой-то альтернативный синтаксис для типизированной задачи

task someTypedTask(type: Exec) {
    commandLine 'ls'
}

Почему он работает без объявления типа? У нас есть какие-то документы по этому поводу?

Gradle за прокси-сервером
Gradle за прокси-сервером
Создайте проект Gradle под сетевым прокси.
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
В этой статье блога мы проведем вас через процесс установки Gradle на Ubuntu 22.04, интеграции его с Jenkins и создания задания Gradle. Мы...
0
0
172
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

exec, который вы используете в doLast, определяется в интерфейсе Проект. В документации указано:

ExecResult exec(Action action) Executes an external command.
The given action configures a ExecSpec, which is used to launch the process.
This method blocks until the process terminates, with its result being returned.

Ответ принят как подходящий

Это просто метод, определенный экземпляром Project. Он выполняет команду, указанную в закрытии напрямую, поэтому его можно использовать для выполнения команды на этапе настройки. В данном примере он используется для выполнения двух команд в одной задаче (на этапе выполнения через doLast), что ИМХО следует считать плохой практикой.

Существуют и другие методы, которые выполняются напрямую и разделяют закрытие конфигурации с типами задач, а именно copy, delete и javaexec.

Другие вопросы по теме