目前我这样做:
<echo message="cd ${build.dir}/scripts ; ./update.sh ${arg1} ${arg2} ${arg3} ${arg4} ${arg5} ${arg6} ; cd -" />
<exec dir="${build.dir}/scripts"
executable="./update.sh"
resultproperty="update.result" >
<arg value="${arg1}"/>
<arg value="${arg2}"/>
<arg value="${arg3}"/>
<arg value="${arg4}"/>
<arg value="${arg5}"/>
<arg value="${arg6}"/>
</exec>
这echo
让我可以轻松解决问题。但是,echo 语句需要与 exec 语句的参数一起更新,否则此调试输出不匹配。
我想做的是:
<execWithEcho dir="${build.dir}/scripts"
executable="./update.sh"
resultproperty="update.result" >
<arg value="${arg1}"/>
<arg value="${arg2}"/>
<arg value="${arg3}"/>
<arg value="${arg4}"/>
<arg value="${arg5}"/>
<arg value="${arg6}"/>
</exec>
结果与上述相同。
哪里execWithEcho
将是这样定义的宏:
<macrodef name="execWithEcho">
<attribute name="attr.dir"
description="Directory to run exec in."/>
<attribute name="attr.executable"
description="The executable target."/>
<attribute name="attr.resultProperty"
description="The property to set the retern value of the target executable/"/>
<sequential>
<echo message="//TODO implement echo in execWithEcho"/>
<exec dir="@{attr.dir}"
executable="@{attr.executable}"
resultProperty="@{attr.resultProperty}">
<!-- args go here -->
</exec>
</sequential>
</macrodef>
我在这里不确定的是如何遍历所有<arg />
传入的子元素;以 echo 语句所需的方式将它们连接成一个字符串。
提前致谢!