1

現在、私はこれを行います:

  <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 ステートメントに必要な方法で、それらを単一の文字列に連結します。

前もって感謝します!

4

0 に答える 0