我正在使用exec从ant build.xml多次调用命令行程序。这个命令行程序为不同的情况接受可变数量的参数。
目前,我正在多次使用exec调用这个外部程序,代码看起来很混乱。例如:
<exec dir="./deploy_abc/bin" executable="python" failonerror="true" >
<arg line="tests.py"/>
<arg line="-h aaa"/>
<arg line="-u bbb"/>
<arg line="-p ccc"/>
</exec>
<exec dir="./deploy_abc/bin" executable="python" failonerror="true" >
<arg line="tests.py"/>
<arg line="-h ddd"/>
<arg line="-u eee"/>
<arg line="-p fff"/>
<arg value="this is second test"/>
</exec>
<exec dir="./deploy_abc/bin" executable="python" failonerror="true" >
<arg line="tests.py"/>
<arg line="-u bbb"/>
<arg line="-p ccc"/>
<arg value="this is another test"/>
</exec>因此,我计划使用宏file重构这个build.xml文件。
我的问题是如何将变量数的参数传递给宏。如上面所示,我需要根据场景将不同的参数传递给exec-ed程序。
发布于 2013-12-17 11:24:14
您可以使用element来支持这一点:
这用于指定新任务的嵌套元素。任务实例的嵌套元素的内容放在标记名称的模板化任务中。
例如,您可以像这样定义宏:
<macrodef name="call-exec">
<attribute name="dir"/>
<attribute name="executable"/>
<attribute name="failonerror"/>
<element name="arg-elements"/>
<sequential>
<exec dir="@{dir}" executable="@{executable}"
failonerror="@{failonerrer}" >
<arg-elements />
</exec>
</sequential>
</macrodef>就这样叫它:
<call-exec dir="./deploy_abc/bin" executable="python" failonerror="true" >
<arg-elements>
<arg line="tests.py"/>
<arg line="-u bbb"/>
<arg line="-p ccc"/>
<arg value="this is another test"/>
</arg-elements>
</call-exec>https://stackoverflow.com/questions/20631191
复制相似问题