0

我在使用 Ant 时遇到问题

我想检查一个漫长过程的结束,而不使用讨厌的<sleep>命令。

在我的 Ant 目标中,我正在启动

<exec executable="my long process" />

当我手动检查进程是否结束时,我正在使用以下命令:

watch " "check ksh script" | grep "ONLINE" "

当 grep 返回一些东西时,这意味着我的进程已经结束(因为检查 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>

4

1 回答 1

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>
于 2013-05-17T18:11:31.380 回答