Ejecutando script bash en gradle
Estoy haciendo pruebas funcionales con geb.
Mi aplicación se implementa utilizando virgo y utiliza HSQLDB para almacenar datos. Me gustaría realizar pruebas en esta versión de trabajo de la aplicación, pero me gustaría comenzar con la base de datos vacía, cada vez que ejecuto pruebas web.
Escribí un simple guión de bash
#!/bin/sh
rm -rf $VIRGO_HOME/aresdb*
$VIRGO_HOME/bin/shutdown.sh &
sleep 10
$VIRGO_HOME/bin/startup.sh &
Lo que elimina la base de datos y reinicia virgo.
Sin embargo, cuando lo agrego a mi tarea build.gradle, la ejecución del comando nunca termina.
task cleanDB(type: Exec) {
commandLine './clean.sh'
}
¿Por qué es así? Cuando ejecuto este script en la consola, vuelve rápidamente (pero virgo aún escribe en la consola).
He intentado ejecutarlo en un hilo separado, pero encontré el siguiente error:
task cleanDBThread()<<{
def cleanDBThread1 = Thread.start {
cleanDB.execute()
}
sleep 10000
println "wake up!"
}
Exception in thread "Thread-32" java.lang.IllegalStateException:
Cannot start long running operation, as the task artifact state cache
(/home/tomasz/ares/.gradle/1.0-milestone-9/taskArtifacts) has not been locked.
También intenté configurar 'crear-soltar' en la configuración de hibernación, pero también requiere reiniciar Virgo. Incluso redistribuir la aplicación no ayuda.
¿Qué debo hacer para ejecutar pruebas web con una base de datos vacía?