ANT:在<arg>中使用“,”而不扩展到多个参数</arg>

时间:2012-11-30 21:19:17

标签: ant build.xml

以下ANT exec标记的行为与预期不符。

<exec executable="c:\scratch\test.cmd">
    <arg value="A,B,C"/>
</exec>

执行时,我希望用一个参数调用text.cmd。但是,arg正在扩展为三个独立的论点。

根据手册,值应该将内容作为单个参数传递,但是,它将作为三个传递(一个用逗号分隔的字符串的每个组件)。

我尝试用分号(;)替换命令“,”,但这也不起作用。似乎arg的value属性解析提供的字符串就像它是一个路径一样,它不是。

任何人都知道如何将“A,B,C”作为一个参数传递?

为了完整起见,我的test.cmd文件是这样的:

@echo off
echo Arg1: %1
echo Arg2: %2
echo Arg3: %3
echo Arg4: %4
echo Arg5: %5
echo Arg6: %6
echo Arg7: %7
echo Arg8: %8
echo Arg9: %9

并且ant build的输出是:

 [exec] Arg1: A
 [exec] Arg2: B
 [exec] Arg3: C
 [exec] Arg4:
 [exec] Arg5:
 [exec] Arg6:
 [exec] Arg7:
 [exec] Arg8:
 [exec] Arg9:

2 个答案:

答案 0 :(得分:2)

问题已经解决。我非常关注蚂蚁这个问题,我没有花时间测试DOS命令行如何解释命令行参数。

从Window命令行,我运行test.cmd a,c,b并看到命令参数被拆分,因此,问题与ant无关。所以现在我只需要弄清楚如何强制ANT引用参数。

答案 1 :(得分:1)

尝试:

<exec executable="c:\scratch\test.cmd">
    <arg line="A,B,C"/>
</exec>

有关arguments如何工作的说明,请参阅ant手册。