如何在用jRuby编写的Java程序中进行自定义退出状态



我正在开发一个验证util的通用基础,我希望将其作为JAR分发并使用Ant进行自动化。单独使用Java,我可以做一些类似的事情

...
int validationResults = this.validate();
System.exit(validationResults) // via Ant: 1 = "BUILD FAILED", 0 = "BUILD SUCCESSFUL"
...

在使用CI系统的计划生成中使用验证util。

然而,我是用jRuby而不是Java写这篇文章的(为了学习)。我尝试了以下方法,但它们不会在Ant中触发"BUILD FAILED"。

java.lang.System.exit(1) # using "require 'java'" at the the top of the file
Kernel.exit 1
exit 1

我在jRuby问题跟踪器中看到了关于这一点的票证(例如jRuby-1650),但我还没有找到解决问题的方法。

我正在运行jRuby v1.6.6和Warbler v1.3.2。蚂蚁的目标看起来像这样:

<target name="validate">
  <java jar="./validator.jar" fork="true" />
</target>

是我做得不对,还是jRuby还不支持这一点?

我假设您从javaAnt任务开始您的jRuby代码。

为了在jRuby进程中出现非零退出代码的情况下使Ant失败,您必须将java任务的failonerror属性设置为true

当ant无法识别退出代码时,这里有一个我用来触发构建失败的漏洞。它需要ant-contrib

蚂蚁:

<delete file="${java.io.tmpdir}/build-executable-error"/>
<exec executable= ... />
<if>
    <resourceexists>
        <file file="${java.io.tmpdir}/build-executable-error"/>
    </resourceexists>
    <then>
        <loadfile srcfile="${java.io.tmpdir}/build-executable-error"
                  property="build.failure.message"/>
        <fail message="${build.failure.message}"/>
    </then>
</if>

然后,可执行文件负责在任何错误场景中创建和填充文件${java.io.tmpdir}/build-executable-error

相关内容

  • 没有找到相关文章

最新更新