Откуда взялся блок exec раздела doLast? - PullRequest
0 голосов
/ 02 мая 2018

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

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

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

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

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

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

0 голосов
/ 02 мая 2018

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

ExecResult exec (Действие действия) Выполняет внешнюю команду.
Данное действие настраивает ExecSpec, который используется для запуска процесса.
Этот метод блокируется до тех пор, пока процесс не завершится, а его результат будет возвращен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...