当前位置:  开发笔记 > 编程语言 > 正文

当Scala失败时,Jenkins报告成功

如何解决《当Scala失败时,Jenkins报告成功》经验,为你挑选了1个好方法。

我刚刚尝试了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

然而,与Java相同的操作会导致失败:

/opt/java/jdk1.7.0/bin/java sdfdfsd
Error: Could not find or load main class sdfdfsd
Finished: FAILURE

当从bash运行时,这两个都产生1的退出代码(使用echo $?)

我错过了什么或这是一个错误吗?

编辑:

有趣的是,我在使用ant exec时看到相同的行为 - 当我调用包含对scala的无效调用的shell脚本时,我得到了预期的错误代码,但是通过ant(使用failonerror ='true')我看到零并且构建成功.

谢谢



1> Matthew Farw..:

这是一个已知的错误Scala在管道stdin时使用退出代码,固定在主干中.

要修补系统,修复非常简单,在$ SCALA_HOME/bin/scala脚本中,第25行

function onExit() {
  if [[ "$saved_stty" != "" ]]; then
    restoreSttySettings
    exit $scala_exit_status
  fi
}

将出口移到if的外面:

function onExit() {
  if [[ "$saved_stty" != "" ]]; then
    restoreSttySettings
  fi
  exit $scala_exit_status
}

这将解决你的问题(实际上在蚂蚁中,但你必须为scalac做同样的事情).

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有