Executando o script bash no gradle
Eu estou fazendo testes funcionais com o geb.
Meu aplicativo é implantado usando o virgo e usa o HSQLDB para armazenar dados. Eu gostaria de realizar testes nesta versão funcional do aplicativo, mas gostaria de começar com o banco de dados vazio, toda vez que eu executo os webtests.
Eu escrevi um script simples
#!/bin/sh
rm -rf $VIRGO_HOME/aresdb*
$VIRGO_HOME/bin/shutdown.sh &
sleep 10
$VIRGO_HOME/bin/startup.sh &
que remove o banco de dados e reinicia o virgo.
No entanto, quando eu o adiciono ao meu comando build.gradle task running, nunca termina.
task cleanDB(type: Exec) {
commandLine './clean.sh'
}
Porque é este caminho? Quando executo este script no console ele retorna rapidamente (mas o virgo ainda grava no console).
Eu tentei executá-lo em thread separado, mas eu encontrei seguinte erro:
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.
Eu também tentei configurar 'criar-soltar' na configuração de hibernação, mas também requer reiniciar o virgo. Mesmo a reimplantação do aplicativo não ajuda.
O que devo fazer para executar webtests com o banco de dados vazio?