ant:用于执行ecoes命令的exec的宏,包括参数

时间:2013-01-08 04:13:30

标签: ant arguments exec echo

目前我这样做:

  <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语句所需的方式将它们连接成单个字符串。

提前致谢!

0 个答案:

没有答案