Dav*_*vid 2 java scala jenkins
我刚刚尝试了Jenkins并设置了一些项目.一个特别是调用shell脚本,并且正确地拾取该脚本的退出代码,从而产生通过/失败.然而,当我从命令行调用Scala时,无论发生什么,它都会通过.
在执行shell框中:
/opt/scala/2.9.1/bin/scala sdfsdfsd
Exception in thread "main" java.lang.RuntimeException:
Cannot figure out how to run target: sdfsdfsd
... (stack trace removed)
Finished: SUCCESS
Run Code Online (Sandbox Code Playgroud)
然而,与Java相同的操作会导致失败:
/opt/java/jdk1.7.0/bin/java sdfdfsd
Error: Could not find or load main class sdfdfsd
Finished: FAILURE
Run Code Online (Sandbox Code Playgroud)
当从bash运行时,这两个都产生1的退出代码(使用echo $?)
我错过了什么或这是一个错误吗?
编辑:
有趣的是,我在使用ant exec时看到相同的行为 - 当我调用包含对scala的无效调用的shell脚本时,我得到了预期的错误代码,但是通过ant(使用failonerror ='true')我看到零并且构建成功.
谢谢
这是一个已知的错误Scala在管道stdin时使用退出代码,固定在主干中.
要修补系统,修复非常简单,在$ SCALA_HOME/bin/scala脚本中,第25行
function onExit() {
if [[ "$saved_stty" != "" ]]; then
restoreSttySettings
exit $scala_exit_status
fi
}
Run Code Online (Sandbox Code Playgroud)
将出口移到if的外面:
function onExit() {
if [[ "$saved_stty" != "" ]]; then
restoreSttySettings
fi
exit $scala_exit_status
}
Run Code Online (Sandbox Code Playgroud)
这将解决你的问题(实际上在蚂蚁中,但你必须为scalac做同样的事情).