今天我不得不向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”)
我通过调用批处理脚本来解决这个问题,而只是希望将文件作为参数,但我想知道:如果没有这样的解决方法,是否可以这样做?
答案 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建议解决了我的问题。