Gradle - выполнить несколько команд из задачи
У меня есть 2 отдельных приложения (в одном проекте), для которых требуется 2 отдельных сборки (sencha cmd). Мне было предложено создать gradle script, который будет выполнять сборки для обоих приложений.
Я создал задачу, которая создает одно приложение, но у меня возникают проблемы с использованием одной и той же задачи для создания второго приложения.
Это то, что у меня есть до сих пор:
task senchaCmdBuild (type: Exec) {
workingDir 'src/main/app/MYAPP'
commandLine 'cmd', 'c', 'sencha app build'
}
и это отлично работает.
Когда я добавлю следующие две строки к следующей задаче:
workingDir 'src/main/app/MYOTHERAPP'
commandLine 'cmd', 'c', 'sencha app build'
первая команда игнорируется и выполняется только вторая команда.
Так что я могу выполнить обе команды с одной задачей?
Ответы
Ответ 1
Вы можете использовать второй способ объявления типов задач на gradle.
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'
}
}
}
Вам нужно поставить метод exec в doLast, чтобы он выполнялся только при потоке выполнения
Ответ 2
Невозможно сконфигурировать (запустить) несколько команд для задачи типа Exec
. commandLine
это просто сеттер - последний выигрывает. Если вам нужно запустить несколько команд, лучшая идея состоит в том, чтобы реализовать несколько задач, как @RaGe, предложенных в комментарии, или для написания настраиваемой задачи и использования groovy native механизмов - execute
.
Ответ 3
Вы также можете использовать gradle методы вместо создания фиктивных задач
task senchaBuild() {
doLast {
senchaBuild_steps()
}
}
void senchaBuild_steps() {
exec {
workingDir 'src/main/app/MYAPP'
commandLine 'cmd', 'c', 'sencha app build'
}
exec {
workingDir 'src/main/app/MYOTHERAPP'
commandLine 'cmd', 'c', 'sencha app build'
}
}