2013-04-28 112 views
1

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

回答

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