我用java Process.exec启动shell脚本(出于原因),它们总是返回0退出值,而不管脚本本身的退出值如何(我可以通过在OS中运行上述脚本来检查它。有关其他信息,这些脚本使用gradle-node-plugin运行gradle任务。对这个问题有什么建议吗?
总的来说,设置如下:
软件
执行Shell脚本时,
Process process = Runtime.getRuntime().exec(new String[]{"sh", "-c", testScript});返回值是用test.exitValue()获得的,并且似乎总是0。
Shell脚本调用gradle ./gradlew project:clean project:test。
Gradle脚本依赖于gradle-node-plugin
plugins {
id "com.moowork.node" version "1.2.0"
}
task test(type: NodeTask) {
script = file('./node_modules/mocha/bin/mocha')
args = ['test/sometest.js']
}发布于 2018-07-27 10:22:49
Gradle脚本阻止将退出代码返回到同一个shell,甚至阻止调用shell结束。这是通过使用环境变量GRADLE_EXIT_CONSOLE来完成的(任意的非空值就足够了):
如果您要通过Runtime.exec调用gradle,它将创建一个新的shell,因此您需要在调用脚本之前设置该变量,这样您就可以在shell结束后获得退出代码。
https://stackoverflow.com/questions/51545885
复制相似问题