Выполнение bash-скрипта в Gradle
Я делаю функциональное тестирование с Geb.
Мое приложение развернуто с использованием virgo и использует HSQLDB для хранения данных. Я хотел бы выполнить тесты для этой рабочей версии приложения, но я бы хотел начать с пустой базы данных, каждый раз, когда я запускаю веб-тесты.
Я написал простой скрипт bash
#!/bin/sh
rm -rf $VIRGO_HOME/aresdb*
$VIRGO_HOME/bin/shutdown.sh &
sleep 10
$VIRGO_HOME/bin/startup.sh &
который удаляет базу данных и перезапускает деву.
Тем не менее, когда я добавляю его в мою задачу build.gradle, выполнение команды никогда не заканчивается.
task cleanDB(type: Exec) {
commandLine './clean.sh'
}
Почему так? Когда я запускаю этот скрипт в консоли, он быстро возвращается (но virgo все еще пишет в консоль).
Я пытался запустить его в отдельном потоке, но я столкнулся со следующей ошибкой:
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.
Я также попытался установить "создать-бросить"; в спящем состоянии, но также требует перезапуска Девы. Даже повторное развертывание приложения не помогает.
Что я должен сделать, чтобы запустить веб-тесты с пустой базой данных?