我目前正在编写一个ant项目xml文件,我正在寻找一些提示和技巧来改善项目的结构和可读性。
<target name="eatnutsOnClient" >
<monkey.eatnuts clientName="${clientName}" label="${nutLabel}" />
<if><not> <equals arg1="${returnCode}" arg2="0"/> </not><then>
<echo message="eatnuts-[${nutlabel}]_[${returnCode}]${line.separator}" file="${reachedFile}" append="true" />
</then></if>
</target>
<target name="eatnuts" depends="createClient,eatnutsOnClient,destroyClient"/>
为了管理返回代码,我希望能够通过一种我可以调用来处理返回码逻辑的函数来替换我需要通过某些目标复制的完整if部分。我想一个选项是创建一个只包含if部分的目标并将其添加到每个任务的依赖列表中?还有更好的方法吗?
答案 0 :(得分:1)
Ant <macrodef>
提供了一种类似函数的方式来共享代码:
<project name="ant-macrodef-echo" default="run">
<taskdef resource="net/sf/antcontrib/antlib.xml" />
<macrodef name="echo-macrodef">
<attribute name="returnCode"/>
<sequential>
<if>
<not>
<equals arg1="@{returnCode}" arg2="0"/>
</not>
<then>
<echo message="@{returnCode}" />
</then>
</if>
</sequential>
</macrodef>
<target name="run">
<echo-macrodef returnCode="42"/>
<echo-macrodef returnCode="0"/>
<echo-macrodef returnCode="-9"/>
</target>
</project>
结果:
run:
[echo] 42
[echo] -9