我在使用Ant
时遇到了问题我想检查一个漫长过程的结束,而不使用讨厌的<sleep>
命令。
在我的Ant目标中,我正在启动
<exec executable="my long process" />
当我手动检查进程结束时,我正在使用以下命令:
watch " "check ksh script" | grep "ONLINE" "
当grep返回某些内容时,表示我的进程已结束(因为check check ksh脚本输出ONLINE)
如何在Ant中执行相同的检查?
我正在尝试使用以下内容(模拟watch命令)
<exec executable="my long process" />
<waitfor maxwait="2" maxwaitunit="minute" checkevery="5" checkeveryunit="second">
// do something here to check "ONLINE"
</waitfor>
但我不知道在<waitfor>
答案 0 :(得分:0)
Ant可以通过多种方式执行检查脚本然后测试其输出,但它不适合只接受一个条件的waitfor
任务。
你可以试试脚本。 请参阅:http://ant.apache.org/manual/Tasks/conditions.html#scriptcondition
看起来应该是这样的:
<scriptcondition language="javascript" value="true">
var p = java.lang.Runtime.getRuntime().exec("ksh check");
p.waitFor();
var reader = new java.io.InputStreamReader(p.getInputStream());
var out = org.apache.tools.ant.util.FileUtils.safeReadFully(reader);
self.setValue(out.contains("ONLINE"));
</scriptcondition>