現在、私はこれを行います:
<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 ステートメントに必要な方法で、それらを単一の文字列に連結します。
前もって感謝します!