| <?xml version="1.0"?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <project> |
| |
| <target name="simple"> |
| <macrodef name="my.echo"> |
| <attribute name="text"/> |
| <sequential> |
| <echo message="@{text}"/> |
| </sequential> |
| </macrodef> |
| <my.echo text="Hello World"/> |
| </target> |
| |
| <target name="text"> |
| <macrodef name="my.echo"> |
| <attribute name="text"/> |
| <sequential> |
| <echo>@{text}</echo> |
| </sequential> |
| </macrodef> |
| <my.echo text="Inner Text"/> |
| </target> |
| |
| <target name="duplicate.attribute"> |
| <macrodef name="my.echo"> |
| <attribute name="text"/> |
| <attribute name="text"/> |
| <sequential> |
| <echo>@{text}</echo> |
| </sequential> |
| </macrodef> |
| </target> |
| |
| <target name="duplicate.element"> |
| <macrodef name="my.echo"> |
| <element name="text"/> |
| <element name="text"/> |
| <sequential> |
| <text/> |
| </sequential> |
| </macrodef> |
| </target> |
| |
| <target name="uri"> |
| <macrodef name="echo" uri="abc"> |
| <attribute name="text"/> |
| <sequential> |
| <echo message="@{text}"/> |
| </sequential> |
| </macrodef> |
| <x:echo xmlns:x="abc" text="Hello World"/> |
| </target> |
| |
| <target name="nested"> |
| <macrodef name="nested"> |
| <element name="nested"/> |
| <sequential> |
| <nested/> |
| </sequential> |
| </macrodef> |
| |
| <nested> |
| <nested> |
| <echo>A nested element</echo> |
| </nested> |
| </nested> |
| </target> |
| |
| <target name="double"> |
| <macrodef name="double"> |
| <attribute name="prop"/> |
| <sequential> |
| <echo>@@{prop} is '@{prop}', value of $${@{prop}} is '${@{prop}}'</echo> |
| </sequential> |
| </macrodef> |
| <property name="property" value="A property value"/> |
| <double prop="property"/> |
| </target> |
| |
| <target name="ignorecase"> |
| <macrodef name="ignore"> |
| <attribute name="MyAttribute"/> |
| <sequential> |
| <echo>@{myattribute} is @{MYATTRIBUTE}</echo> |
| </sequential> |
| </macrodef> |
| <ignore myattribute="a"/> |
| <ignore Myattribute="b"/> |
| </target> |
| |
| <target name="ignore-element-case"> |
| <macrodef name="ignore"> |
| <element name="MyElement"/> |
| <sequential> |
| <myElement/> |
| <MyElEmEnT/> |
| </sequential> |
| </macrodef> |
| <ignore> |
| <MYELEMENT> |
| <echo>nested element</echo> |
| </MYELEMENT> |
| </ignore> |
| </target> |
| |
| <target name="textelement"> |
| <macrodef name="echotest"> |
| <text name="text" optional="yes"/> |
| <sequential> |
| <echo>@{text}</echo> |
| </sequential> |
| </macrodef> |
| <echotest> |
| Hello world |
| </echotest> |
| </target> |
| |
| <target name="text.trim"> |
| <macrodef name="echotest"> |
| <text name="text" trim="yes"/> |
| <sequential> |
| <echo>[@{text}]</echo> |
| </sequential> |
| </macrodef> |
| <echotest> |
| Hello world |
| </echotest> |
| </target> |
| |
| <target name="duplicatetextname"> |
| <macrodef name="echotest"> |
| <attribute name="text"/> |
| <text name="text"/> |
| <sequential> |
| <echo>@{text}</echo> |
| </sequential> |
| </macrodef> |
| </target> |
| |
| <target name="duplicatetextname2"> |
| <macrodef name="echotest"> |
| <text name="text"/> |
| <attribute name="text"/> |
| <sequential> |
| <echo>@{text}</echo> |
| </sequential> |
| </macrodef> |
| </target> |
| |
| <target name="escape"> |
| <macrodef name="escape"> |
| <attribute name="a"/> |
| <attribute name="b"/> |
| <sequential> |
| <echo>a@b or a@@b is @{a}@@@{b}</echo> |
| </sequential> |
| </macrodef> |
| <escape a="avalue" b="bvalue"/> |
| </target> |
| |
| <target name="attribute.description"> |
| <macrodef name="d"> |
| <attribute name="description"/> |
| <attribute name="d" default="p"/> |
| <sequential> |
| <echo>description is @{description}</echo> |
| </sequential> |
| </macrodef> |
| <d description="hello world"/> |
| </target> |
| |
| <target name="implicit"> |
| <macrodef name="implicit"> |
| <element name="implicit" implicit="yes"/> |
| <sequential> |
| <echo>Before implicit</echo> |
| <implicit/> |
| <echo>After implicit</echo> |
| </sequential> |
| </macrodef> |
| |
| <implicit> |
| <echo>In implicit</echo> |
| </implicit> |
| </target> |
| |
| <target name="implicit.notoptional"> |
| <macrodef name="implicit"> |
| <element name="implicit" implicit="yes"/> |
| <sequential> |
| <echo>Before implicit</echo> |
| <implicit/> |
| <echo>After implicit</echo> |
| </sequential> |
| </macrodef> |
| |
| <implicit> |
| </implicit> |
| </target> |
| |
| <target name="implicit.optional"> |
| <macrodef name="implicit"> |
| <element name="implicit" optional="yes" implicit="yes"/> |
| <sequential> |
| <echo>Before implicit</echo> |
| <implicit/> |
| <echo>After implicit</echo> |
| </sequential> |
| </macrodef> |
| |
| <implicit> |
| </implicit> |
| </target> |
| |
| <target name="implicit.explicit"> |
| <macrodef name="implicit"> |
| <element name="explicit" optional="yes"/> |
| <element name="implicit" optional="yes" implicit="yes"/> |
| <sequential> |
| <implicit/> |
| <explicit/> |
| </sequential> |
| </macrodef> |
| </target> |
| |
| <property name="default.override" value="old"/> |
| <macrodef name="simple.override"> |
| <attribute name="attr" default="${default.override}"/> |
| <sequential> |
| <echo>value is @{attr}</echo> |
| </sequential> |
| </macrodef> |
| |
| <target name="override.default"> |
| <antcall target="override.call"> |
| <param name="default.override" value="new"/> |
| </antcall> |
| </target> |
| |
| <target name="override.call"> |
| <simple.override/> |
| </target> |
| |
| <target name="backtraceoff"> |
| <macrodef name="nobacktrace" backtrace="false"> |
| <sequential> |
| <fail>This is a failure</fail> |
| </sequential> |
| </macrodef> |
| <nobacktrace/> |
| </target> |
| <target name="backtraceon"> |
| <macrodef name="nobacktrace" backtrace="true"> |
| <sequential> |
| <fail>This is a failure</fail> |
| </sequential> |
| </macrodef> |
| <nobacktrace/> |
| </target> |
| |
| <target name="top-level-text"> |
| <macrodef name="top"> |
| <element name="em"/> |
| <sequential> |
| <echo><em/></echo> |
| </sequential> |
| </macrodef> |
| <top> |
| <em> |
| Hello World |
| </em> |
| </top> |
| </target> |
| </project> |