带管道的Ant运行命令

我必须实现命令: java -jar test.jar page.xml | mysql -u user -p base java -jar test.jar page.xml | mysql -u user -p base in ant。 所以我尝试过这个任务:

    

但我的管道exception – “|” :

  java.lang.IllegalArgumentException: Input already set; can't set to | 

那么,这就是问题:)

管道(|)只能在shell脚本中使用。 您将它作为参数传递给java进程。

所以你需要执行一个shell脚本。 你可以通过执行(比方说) bash -c并将上面的内容作为shell语句传递来实现这一点(虽然是内联的 – 你可以编写一个单独的脚本文件,但这里似乎有点开销)

      

我不知道这是否曾经解决,但我遇到了类似的问题,我通过使用以下方法解决了这个问题:

     

只是想我会分享。

另一个解决方案是包装java -jar test.jar page.xml | mysql -u user -p base java -jar test.jar page.xml | mysql -u user -p base into一个单独的脚本,并使用简单的任务调用它。

当您从Ant运行java程序时,Ant运行时会捕获程序的输入和输出 – 您无法尝试使用该管道将其重定向到其他位置。

如果你想这样做,你可能会有更好的运行exec任务,虽然这可能会遇到同样的问题。

你实际上在运行一个java命令。

您需要使用Exec任务http://ant.apache.org/manual/Tasks/exec.html但不确定是否还可以运行管道命令。 试一试。