Ant exec任务并使用一些ksh脚本进行检查
我在使用Ant时遇到了一个问题 我想检查一个长过程的结束,而不使用讨厌的Ant exec任务并使用一些ksh脚本进行检查,ant,Ant,我在使用Ant时遇到了一个问题 我想检查一个长过程的结束,而不使用讨厌的命令 在我的蚂蚁目标中,我正在发射 <exec executable="my long process" /> 当grep返回某个内容时,意味着我的进程已经结束(因为check ksh脚本在线输出) 如何在Ant中执行相同的签入 我正在尝试使用以下类似的东西(来模拟watch命令) //在这里做点什么来检查“在线” 但是我不知道在中放什么,Ant有很多方法可以执行检查脚本,然后测试其输出,但是它不能适应只接
命令
在我的蚂蚁目标中,我正在发射
<exec executable="my long process" />
当grep返回某个内容时,意味着我的进程已经结束(因为check ksh脚本在线输出)
如何在Ant中执行相同的签入
我正在尝试使用以下类似的东西(来模拟watch命令)
//在这里做点什么来检查“在线”
但是我不知道在
中放什么,Ant有很多方法可以执行检查脚本,然后测试其输出,但是它不能适应只接受一个条件的waitfor
任务
不过,您可以尝试使用脚本。
见:
应该是这样的:
<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>
var p=java.lang.Runtime.getRuntime().exec(“ksh检查”);
p、 waitFor();
var reader=newjava.io.InputStreamReader(p.getInputStream());
var out=org.apache.tools.ant.util.FileUtils.safeReadFully(reader);
self.setValue(out.contains(“在线”));
是否“漫长的过程”以0这样的退出值结束?如果是这样,则当waitfor块中的属性值更改时,在exec和test中使用resultproperty。从文档中可以看出,您似乎无法在exec之前设置属性,然后在waitfor条件中使用“isset”测试。不幸的是,没有。这个漫长的过程要求启动其他几个过程。我可以用“check ksh scrpt”检查他们是否在线,当被调用时输出“离线”或“在线”。您可以详细说明为什么“不能满足只接受一个条件的waitfor任务”吗?根据文档,该文件在a中工作。在问题的“//do somethine here”部分,这种方法似乎有效。waitfor
只需要一个条件。在您的用例中,您至少需要一个exec任务和一个条件。这两种方法都不适用于waitfor
。执行脚本条件会得到“javax.script.ScriptException:sun.org.mozilla.javascript.internal.EcmaError:ReferenceError:“未定义运行时”。我添加了BSF-2.4.0.jar、commons-logging-1.1.2.jar和js.jar(rhino1_7R4)但是我仍然得到org.mozilla.javascript.EcmaError:ReferenceError:Runtime没有定义。好的,问题是Runtime没有“导入”,所以我编写了java.lang.Runtime.getRuntime().exec(…)。但现在我有了:Java类“Java.io.InputStreamReader”没有名为“InputStreamReader”的公共实例字段或方法,这很奇怪,因为InputStreamReader类中有一个构造函数InputStreamReader(Inputstream)
<exec executable="my long process" />
<waitfor maxwait="2" maxwaitunit="minute" checkevery="5" checkeveryunit="second">
// do something here to check "ONLINE"
</waitfor>
<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>