gpt4 book ai didi

hibernate - 在 gradle 中执行 bash 脚本

转载 作者:行者123 更新时间:2023-11-28 19:40:54 25 4
gpt4 key购买 nike

我正在使用 geb 进行功能测试。

我的应用是使用virgo部署的,使用HSQLDB存储数据。我想对此应用程序的工作版本执行测试,但我想在每次运行 web 测试时都从空数据库开始。

我写了一个简单的 bash 脚本

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

删除数据库并重新启动 virgo。

但是,当我将它添加到我的 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.

我也尝试在 hibernate 配置中设置“create-drop”,但它也需要重新启动 virgo。即使重新部署应用程序也无济于事。

我应该如何使用空数据库运行网络测试?

最佳答案

这很奇怪

我创建了一个任务

task callCL(type: Exec) {
commandLine './cl.sh'
}

调用cl.sh文件

#!/bin/sh
echo "starting "
./acl.sh &
sleep 10
./acl.sh &

调用acl.sh

#!/bin/sh
echo "I am not doing anything"

成功了!但有一件事,当你添加 ./acl.sh 符号 & 时,你是从另一个启动 gradle 的线程调用任务,看起来有点像挂起.我会从你的关机调用中删除 & 并像这样开始

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

无论如何你想在同一个线程中等待从关闭到启动,并且不需要调用 sleep !

关于hibernate - 在 gradle 中执行 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10804023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com