Exécution du script bash dans Gradle

Je suis en train de faire les tests fonctionnels avec geb.

Mon application est déployée à l'aide de la vierge et utilise HSQLDB pour stocker des données. Je voudrais faire des tests sur cette version de travail de l'application, mais je voudrais commencer avec une base de données vide, chaque fois que je lance webtests.

J'ai écrit un script bash simple

#!/bin/sh
rm -rf $VIRGO_HOME/aresdb*
$VIRGO_HOME/bin/shutdown.sh &
sleep 10
$VIRGO_HOME/bin/startup.sh &

qui supprime la base de données et de redémarrage de la vierge.

Cependant, lorsque je l'ajoute à ma construction.gradle tâche d'exécution de la commande ne se termine jamais.

task cleanDB(type: Exec) {
    commandLine './clean.sh' 
}

Pourquoi est-il de cette façon? Lorsque j'exécute ce script dans la console elle se retourne rapidement (mais la vierge écrit encore à la console).

J'ai essayé de l'exécuter dans le thread, mais j'ai rencontré l'erreur suivante:

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.

J'ai aussi essayé l'établissement de "create-drop" dans hibernate configuration, mais il exige également le redémarrage de la vierge. Même le redéploiement de l'application n'aide pas.

Que dois-je faire pour exécuter webtests avec base de données vide?

source d'informationauteur tkowal