We can define custom task in Apache Ant using the <macrodef> which makes use of the <sequential> nested task as a template.
Try the following build.xml and run ant to get a rough idea on how it works.
build.xml
<project name="Ant MarcoDef Example" default="run" basedir=".">
<!-- Parameter as attribute -->
<macrodef name="attr-example">
<attribute name="who" default="mum"/>
<sequential>
<echo message="******************"/>
<echo message="* attr-example *"/>
<echo message="******************"/>
<echo message="Hello @{who}!"/>
</sequential>
</macrodef>
<!-- Parameter as text -->
<macrodef name="text-example">
<text name="who"/>
<sequential>
<echo message="******************"/>
<echo message="* text-example *"/>
<echo message="******************"/>
<echo message="Hello @{who}!"/>
</sequential>
</macrodef>
<!-- Parameter as element -->
<macrodef name="element-example">
<element name="args"/>
<sequential>
<echo message="*******************"/>
<echo message="* element-example *"/>
<echo message="*******************"/>
<exec executable="cmd">
<args />
</exec>
</sequential>
</macrodef>
<!-- Parameter as implicit element -->
<macrodef name="implicit-element-example">
<element name="args" implicit="yes"/>
<sequential>
<echo message="****************************"/>
<echo message="* implicit-element-example *"/>
<echo message="****************************"/>
<exec executable="cmd">
<args />
</exec>
</sequential>
</macrodef>
<!-- Run all task defined by MarcoDef above -->
<target name="run">
<attr-example who="Eureka!" />
<echo message=""/>
<text-example>World</text-example>
<echo message=""/>
<element-example>
<!-- Run "ant -version" in cmd -->
<args>
<arg value="/c"/>
<arg value="ant.bat"/>
<arg value="-version"/>
</args>
</element-example>
<echo message=""/>
<implicit-element-example>
<!-- Run "ant -version" in cmd -->
<arg value="/c"/>
<arg value="ant.bat"/>
<arg value="-version"/>
</implicit-element-example>
</target>
</project>
Done =)
Reference:


Thanks. I understood the usage of MACRODEF.
It is useful for Understanding the Project
LikeLike
Good to know that. =)
LikeLike