154*_*12s 7 gradle build.gradle
我正在从gradle运行shell脚本,问题是shell脚本正在运行一些先决条件,我需要在gradle继续之前运行.
我尝试了以下但似乎gradle正在为shell脚本打开另一个子进程
sleep.sh
echo 'hi1'
sleep 1
echo 'hi2'
sleep 10
echo 'bye'
Gradle:
task hello3(type: Exec) {
println 'start gradle....'
commandLine 'sh','sleep.sh'
println 'end gradle....'
}
Result:
start gradle....
end gradle....
:hello3
hi1
hi2
bye
Run Code Online (Sandbox Code Playgroud)
您的问题是您的 println 语句在 Gradle 解析 build.gradle 文件时执行,而不是在执行任务时执行。
您应该将 println 语句移动到 doFirst 和 doLast 如下,以使事情更清楚:
task hello3(type: Exec) {
doFirst {
println 'start gradle....'
}
commandLine 'sh','sleep.sh'
doLast {
println 'end gradle....'
}
}
Run Code Online (Sandbox Code Playgroud)
我相信,Gradle 实际上在做任何其他事情之前等待脚本完成,所以你不需要做任何特殊的事情来让它等待。
Gradle 将始终在子进程中启动您的 shell 脚本。
归档时间: |
|
查看次数: |
5341 次 |
最近记录: |