Ant 结构蚂蚁项目

Ant 结构蚂蚁项目,ant,ant-contrib,Ant,Ant Contrib,我目前正在编写一个ant项目xml文件,我正在寻找一些提示和技巧来改进项目的结构和可读性 <target name="eatnutsOnClient" > <monkey.eatnuts clientName="${clientName}" label="${nutLabel}" /> <if><not> <equals arg1="${returnCode}" arg2="0"/> </not><then>

我目前正在编写一个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部分的目标,并将其添加到每个任务的依赖列表中?有更好的方法吗?

An提供了一种类似函数的方式来共享代码:

<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>
提供了一种类似函数的方式来共享代码:

<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>