一個ant中用于編譯的宏定義例子:
?1?????<macrodef?name="compile">
?2?????????<attribute?name="module"/>
?3?????????<attribute?name="additional.src.dirs"?default=""/>
?4?????????<element?name="options"?optional="yes"/>
?5?
?6?????????<sequential>
?7?????????????<echo>Compiling?@{module}
</echo>
?8?????????????<mkdir?dir="${build.dir}/@{module}/classes"/>
?9?????????????<mkdir?dir="${test.dir}/@{module}/classes"/>
10?????????????<javac?srcdir="${src}/@{module};@{additional.src.dirs}"
11?????????????????destdir="${build.dir}/@{module}/classes"?debug="${compile.debug}"
12?????????????????deprecation="${compile.deprecation}"?optimize="${compile.optimize}"
13?????????????????classpathref="@{module}.compile.classpath">
14?????????????????<options/>
15?????????????</javac>
16?????????????<javac?srcdir="test/@{module}"?debug="true"
17?????????????????destdir="${test.dir}/@{module}/classes">
18?????????????????<classpath>
19?????????????????????<path?refid="@{module}.test.classpath"/>
20?????????????????????<path?location="${build.dir}/@{module}/classes"/>
21?????????????????</classpath>
22?????????????????<options/>
23?????????????</javac>
24?????????</sequential>
25?????</macrodef>
?? 調用宏代碼:?
?1?????<macrodef?name="compile">
?2?????????<attribute?name="module"/>
?3?????????<attribute?name="additional.src.dirs"?default=""/>
?4?????????<element?name="options"?optional="yes"/>
?5?
?6?????????<sequential>
?7?????????????<echo>Compiling?@{module}

?8?????????????<mkdir?dir="${build.dir}/@{module}/classes"/>
?9?????????????<mkdir?dir="${test.dir}/@{module}/classes"/>
10?????????????<javac?srcdir="${src}/@{module};@{additional.src.dirs}"
11?????????????????destdir="${build.dir}/@{module}/classes"?debug="${compile.debug}"
12?????????????????deprecation="${compile.deprecation}"?optimize="${compile.optimize}"
13?????????????????classpathref="@{module}.compile.classpath">
14?????????????????<options/>
15?????????????</javac>
16?????????????<javac?srcdir="test/@{module}"?debug="true"
17?????????????????destdir="${test.dir}/@{module}/classes">
18?????????????????<classpath>
19?????????????????????<path?refid="@{module}.test.classpath"/>
20?????????????????????<path?location="${build.dir}/@{module}/classes"/>
21?????????????????</classpath>
22?????????????????<options/>
23?????????????</javac>
24?????????</sequential>
25?????</macrodef>
?? 調用宏代碼:?
1、<compile?module="web"?additional.src.dirs="${build.dir}/web/gen"/>
2、<compile module="dao"/>
2、<compile module="dao"/>