extjs - Gradle-ejecutar comandos mĂșltiples de la tarea
(3)
Tengo 2 aplicaciones separadas (en un proyecto) que requieren 2 versiones separadas (sencha cmd). Se me ha pedido que cree un script de Gradle que hará las compilaciones para ambas aplicaciones.
Creé una tarea que crea una aplicación, pero tengo problemas al usar la misma tarea para crear la segunda aplicación.
Esto es lo que tengo hasta ahora:
task senchaCmdBuild (type: Exec) {
workingDir ''src/main/app/MYAPP''
commandLine ''cmd'', ''c'', ''sencha app build''
}
y esto funciona bien.
Cuando agrego las siguientes 2 líneas a la tarea anterior:
workingDir ''src/main/app/MYOTHERAPP''
commandLine ''cmd'', ''c'', ''sencha app build''
el primer comando se ignora y solo el segundo comando se ejecuta.
Entonces, ¿hay de todos modos puedo ejecutar ambos comandos con una tarea?
Es imposible configurar (ejecutar) varios comandos para la tarea de tipo Exec
. commandLine
es solo un setter, el último gana. Si necesita ejecutar varios comandos, la mejor idea es implementar varias tareas como @RaGe sugirió en el comentario o escribir una tarea personalizada y usar los mecanismos nativos de groovy''s: método de execute
.
Puede utilizar la segunda forma de declarar tipos de tareas en 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''
}
}
}
Debe poner el método exec en doLast para que se ejecute solo en el flujo de ejecución
También puedes usar métodos gradle en lugar de crear tareas ficticias.
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''
}
}