没有双引号的Apache Ant命令行参数 - 是否可能?
-
05-07-2019 - |
题
今天我不得不向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建议解决了我的问题。
不隶属于 StackOverflow