Ant执行任务并使用一些ksh脚本进行检查

时间:2013-05-17 16:00:26

标签: ant

我在使用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>

中放什么

1 个答案:

答案 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>