带管道的Ant运行命令

Le_*_*eur 24 java ant

我必须执行命令:java -jar test.jar page.xml | mysql -u user -p base 在蚂蚁.所以我尝试过这个任务:

<java jar="test.jar" fork="true">
  <arg line="page.xml | mysql -u user -p base"/>
</java>
Run Code Online (Sandbox Code Playgroud)

但我的管道异常 - "|" :

 java.lang.IllegalArgumentException: Input already set; can't set to |
Run Code Online (Sandbox Code Playgroud)

那么,这就是问题:)

Bri*_*new 59

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

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

  <exec executable="bash">
    <arg value="-c"/>
    <arg line="java -jar test.jar page.xml | mysql -u user -p base"/>
  </exec>
Run Code Online (Sandbox Code Playgroud)

  • Porblem在<arg value ="...">,它应该是<arg line ="...">但现在它写道:/ usr/bin/java:/ usr/bin/java:无法执行二进制文件 (4认同)

小智 9

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

<exec executable="bash">
    <arg value="-c"/>
    <arg line='"java -jar test.jar page.xml | mysql -u user -p base"'/>
</exec>
Run Code Online (Sandbox Code Playgroud)

只是想我会分享.