Ant是一个基于Java的跨平台构建工具,它易于使用,并且可扩展、可升级。
MacroDef——“宏”,在Ant中是非常实用的,它的作用相当于java里面的为防止代码重复而提取的公共方法。比如我现在需要将某几个目录分别进行编译和打包,不使用MacroDef的情况下,如果有10个目录,那么我就至少要写10个类似的<target></target>来做完对这10个目录的操作;但在使用MacroDef的情况下,你只用写一个通用的<macrodef></macrodef>,再在其他地方调用它就可以了,既减少了代码量,又提高了工作效率。
MacroDef的具体书写格式和参数,在官网使用手册(http://ant.apache.org/manual/)上都有,这里就不做一一解释了,下面直接举了个具体的例子。
不使用MacroDef的情况下,编译和打包math和io等目录:
———————————————————————————————————————
<target name="build_math" depands="base">
<echo message="... building jck-api-math-cases now ..."/>
<javac debug="false" destdir="bin" source="1.5" target="1.5">
<src path="./java_math"/>
<classpath refid="java_jck.classpath"/>
</javac>
</target>
<target name="make_math" depends="build_math">
<echo message="... make math jar ...."></echo>
<jar jarfile="math.jar" basedir="./bin"/>
<move file="./math.jar" tofile="./lex/math.jar" overwrite="true"/>
</target>
<target name="build_io" depands="base">
……
</target>
<target name="make_io" depends="build_io">
……
</target>
……
使用MacroDef的情况下,编译和打包math和io等目录:
———————————————————————————————————————
<macrodef name="dealWithTestCases"> //macrodef的定义,定义了name属性
<attribute name="tarName" /> //参数定义
<attribute name="srcPath" />
<!--element name="dex-elements"/-->
<sequential> //实际执行的内容在<sequential>里
<echo message="... building jck-api-@{tarName}-cases now ...."/>
<javac debug="false" destdir="bin" source="1.5" target="1.5" includeantruntime="on">
<src path="./@{srcPath}"/>
<classpath refid="java_jck.classpath"/>
<excludesfile name="exclude.@{tarName}"/>
</javac>
<echo message="... make @{tarName} jar ..."></echo>
<jar jarfile="@{tarName}.jar" basedir="./bin"/>
<move file="./@{tarName}.jar" tofile="./lex/@{tarName}.jar" overwrite="true"/>
</sequential>
</macrodef>
<target name="lex" depands="base">
<dealWithTestCases tarName="math" srcPath="./java_math"/> //外部调用宏
<dealWithTestCases tarName="io" srcPath="./java_io"/>
……
</target>
从例子中可以明显看出,MacroDef的使用不仅仅是减少了重复的工作量,性能影响可能非常显著,并且还可能产生更易读和更易于维护的编译文件。
需要注意的是:
1、在整个build文件里,<macrodef>是和<target>平级的,上例中定义的<dealWithTestCases>若不将其放在<target>里面,执行Ant时,脚本会直接执行这部分的宏代码,而不会去执行<target>中定义的‘depands="base"‘依赖关系。
2、<macrodef>可以调用其他的<macrodef>,但不可以调用<target>;<target>可用调用<macrodef>,也可用调用其他<target>。
3、所有任务的特性通过@{}展开而不是${},它们可以随宏的每一次调用而改变,且只在宏定义程序块内部可用。
分享到:
相关推荐
在Ant构建工具中,`macrodef`是一个非常重要的特性,它允许我们定义可重用的任务或片段,类似于编程语言中的函数或宏。这使得Ant脚本更加模块化,提高了代码的可读性和维护性。本资源是作者在处理将文件复制到远程...
"Ant ant ant antant ant ant antant ant ant ant" 这个描述可能是在强调Ant在项目构建过程中的重复性和不可或缺性,暗示着它在工程中的频繁使用和核心地位。 Ant的设计理念是“一切都是XML”,它通过XML格式的构建...
Apache Ant 是一个开源的构建工具,广泛用于Java项目构建,由Apache软件基金会开发。这个"apache-ant-1.6.5-bin.zip"文件是Ant的1.6.5版本的二进制发行版,适合在Windows操作系统上使用。Ant是基于Java的,它的主要...
《Ant参考教程——Java构建工具的精髓》 Ant,作为一款强大的Java项目构建工具,它的出现极大地简化了软件开发过程中的编译、打包、部署等一系列任务。Ant以其跨平台性、简单易用和功能强大而备受青睐,尤其在Java...
"Ant+Tutorial.doc"可能深入到Ant的高级特性,包括使用条件语句(if/else)、属性文件、通配符选择器、宏定义(macrodef)以及自定义任务。通过属性文件,可以外部化配置信息,使构建更具灵活性。宏定义则允许用户...
6. **宏定义(Macrodef)**:宏定义是可重用的任务集合,它们可以封装复杂的构建逻辑,提高代码的可维护性。 7. **插件(Plugins)**:Ant的可扩展性主要通过插件实现,这些插件可以添加新的任务或功能,如Maven...
宏定义(MacroDef)则是为常见任务提供模板,简化脚本编写。 七、属性(Properties) 属性在Ant中用于存储值,可以在脚本中引用和传递。它们可以是全局的,也可以在特定的目标或任务中定义。Ant还支持属性文件,...
Apache Ant 是一个开源的构建工具,广泛用于Java项目管理,它是Apache软件基金会的产品之一。Ant以其XML为基础的构建文件(build.xml)而著名,这种文件定义了构建过程中的任务序列,使得开发人员能够自动化编译、...
**ANT学习笔记(一)——ANT结合JUNIT4学习DEMO** ANT,全称为Apache Ant,是一个基于Java的构建工具,用于自动化Java项目的构建、编译、测试和部署过程。它通过XML配置文件来定义任务,使得项目构建过程可配置且可...
标题“Maven 与 Ant 之比较”表明了本文将探讨两种在Java开发中广泛使用的构建工具——Maven和Ant。它们的主要功能是管理和自动化项目的构建过程,包括编译源代码、运行测试、打包应用以及部署。通过对两者进行对比...
- **宏定义(Macrodef)**:Ant允许用户定义自己的宏,以复用复杂的任务逻辑。 - **自定义任务(Custom Tasks)**:如果内置任务不能满足需求,开发者可以编写Java类来创建自定义任务。 6. **Ant与其他工具的集成...
开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6开发工具 ant-1.9.6...
Ant是Java社区广泛采用的自动化构建工具,它以其灵活性、可扩展性和强大的任务定义能力,成为了许多开发者必备的技能之一。 本书全面讲解了Ant的基本概念、核心组件以及高级用法,旨在帮助读者从零开始掌握Ant的...
**Ant入门教程——使用Ant自动生成JAR文件** Apache Ant是一个Java库和命令行工具,其任务是驱动构建过程。它是Java开发中的一个重要工具,尤其在自动化构建、编译、测试和部署应用程序时。本教程将带你深入了解Ant...
标题“ant配置文件”指的是Ant项目中的核心文件——build.xml。这个文件是Ant构建过程的蓝图,包含了所有构建任务和它们的依赖关系。它定义了如何编译源代码、打包应用、执行测试以及部署项目。在myEclipse这样的...
org.apache.tools.ant.Main org.apache.tools.ant.Task org.apache.tools.bzip2.CRC org.apache.tools.ant.Target org.apache.tools.ant.Project org.apache.tools.zip.ZipFile org.apache.tools.zip.ZipLong ...
2. `macrodef`: 宏定义(Macrodef)是Ant中的自定义任务机制,它允许用户创建新的任务标签,就像Ant自带的任务一样。通过`macrodef`,你可以封装复杂或重复的构建逻辑,提高代码的可读性和复用性。例如,你可以定义...
ant ant下载 ant配置ant ant下载 ant配置ant ant下载 ant配置
Ant还支持条件语句(If/Unless)、循环(For/ForEach)、包含其他构建文件(Import)以及宏定义(Macrodef),这些使得Ant的构建脚本可以实现复杂的逻辑。 在VanetMobiSim的构建过程中,Ant可能会执行以下步骤: 1....
在标题"ant_1.2.6 ant_1.2.6.zip"中,"ant_1.2.6"指的是Ant的一个特定版本——1.2.6。这个版本发布于2002年,相对于当前的版本来说可能较为陈旧,但在当时是一个广泛使用的版本,因为它引入了许多新特性并修复了一些...