今天我不得不向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"

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

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

有帮助吗?

解决方案

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

其他提示

你试过<arg line="..." />吗?

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top