2013-04-28 2 views
1

В настоящее время я пишу мульт-файл проекта ant, и я ищу некоторые подсказки и советы по улучшению структуры и читаемости проекта.Структура ant projects

<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