我正在研究验证工具的通用基础,我希望将其作为JAR分发并使用Ant自动化。单独使用Java,我可以做类似
的事情...
int validationResults = this.validate();
System.exit(validationResults) // via Ant: 1 = "BUILD FAILED", 0 = "BUILD SUCCESSFUL"
...
使用CI系统在预定构建中使用验证工具。
然而,我在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。 Ant目标如下所示:
<target name="validate">
<java jar="./validator.jar" fork="true" />
</target>
我是不是做得对,还是jRuby不支持这个(还有)?
答案 0 :(得分:2)
我想你是从java
Ant task开始你的jRuby代码。
如果在jRuby进程中出现非零退出代码时导致Ant失败,则必须将java任务的failonerror
属性设置为true
。
答案 1 :(得分:1)
这是我用来触发构建失败的kludge,否则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
。