没有双引号的Apache Ant命令行参数 - 是否可能?

时间:2009-10-21 18:25:52

标签: apache command-line ant arguments double-quotes

今天我不得不向Apache Ant文件添加任务。命令行应该类似于

myprogram --param1 --param2 path\somefile 2> path\logfile

这个问题是,如果我使用了类似下面的东西

<exec executable="$(myprogram)"
  <arg value="--param1">
  <arg value="--param2">
  <arg path="$(somefile)">
  <arg value="2>">
  <arg path="$(logfile)">
</exec>

所有参数都被引用,所以命令看起来像这样:

myprogram "--param1" "--param2" "path\somefile" "2>" "path\logfile"

这不错,如果你的文件/路径中有空格,但是将管道破坏到日志文件会更好(相反,程序认为有两个额外的文件参数“2&gt;”和“path \ logfile”)

我通过调用批处理脚本来解决这个问题,而只是希望将文件作为参数,但我想知道:如果没有这样的解决方法,是否可以这样做?

4 个答案:

答案 0 :(得分:2)

您是否尝试过<arg line="..." />

答案 1 :(得分:2)

当您运行“myprogram --param1 --param2 path \ somefile 2&gt; path \ logfile”时,程序的参数将以“2&gt;”结束。文件重定向是shell的一个操作,它不是在ant中使用的。如果您查看ant exec task的文档,您会看到它支持通过输出属性进行重定向。

答案 2 :(得分:1)

ant exec任务有一个输出参数,您可以在其中指定日志文件而不需要命令行管道,并结合参数append来确定是否应覆盖或附加输出文件。

答案 3 :(得分:1)

我有一个与主题启动器相同的问题。在java执行命令行上,我需要将源文件作为单独的参数添加,而不是作为一个带有引号的参数。 我使用了<arg value="..." />标记,但使用<arg line="..." />作为nullptr建议解决了我的问题。