带管道的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但不确定是否还可以运行管道命令。 试一试。