`
lhq1013
  • 浏览: 87862 次
  • 性别: Icon_minigender_2
  • 来自: 丽水
社区版块
存档分类
最新评论

Ant之MacroDef——“宏”

    博客分类:
  • Ant
阅读更多

    Ant是一个基于Java的跨平台构建工具,它易于使用,并且可扩展、可升级。
    MacroDef——“
,在Ant中是非常实用的,它的作用相当于java里面的为防止代码重复而提取的公共方法。比如我现在需要将某几个目录分别进行编译和打包,不使用MacroDef的情况下,如果有10个目录,那么我就至少要写10个类似的<target></target>来做完对这10个目录的操作;但在使用MacroDef的情况下,你只用写一个通用的<macrodef></macrodef>,再在其他地方调用它就可以了,既减少了代码量,又提高了工作效率。
    MacroDef
的具体书写格式和参数,在官网使用手册(http://ant.apache.org/manual/)上都有,这里就不做一一解释了,下面直接举了个具体的例子。


不使用MacroDef的情况下,编译和打包mathio等目录:
———————————————————————————————————————

<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的情况下,编译和打包mathio等目录:
———————————————————————————————————————

<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、所有任务的特性通过@{}展开而不是${},它们可以随宏的每一次调用而改变,且只在宏定义程序块内部可用。

2
1
分享到:
评论
1 楼 米饭rice 2012-08-22  
介绍的非常清楚 谢谢

相关推荐

    关于ANT脚本中使用macrodef

    在Ant构建工具中,`macrodef`是一个非常重要的特性,它允许我们定义可重用的任务或片段,类似于编程语言中的函数或宏。这使得Ant脚本更加模块化,提高了代码的可读性和维护性。本资源是作者在处理将文件复制到远程...

    ant ant ant ant

    "Ant ant ant antant ant ant antant ant ant ant" 这个描述可能是在强调Ant在项目构建过程中的重复性和不可或缺性,暗示着它在工程中的频繁使用和核心地位。 Ant的设计理念是“一切都是XML”,它通过XML格式的构建...

    apache-ant-1.6.5-bin.zip_ ant 1.6.5_ant_ant-1.6.5_apache ant win

    Apache Ant 是一个开源的构建工具,广泛用于Java项目构建,由Apache软件基金会开发。这个"apache-ant-1.6.5-bin.zip"文件是Ant的1.6.5版本的二进制发行版,适合在Windows操作系统上使用。Ant是基于Java的,它的主要...

    Ant参考教程 ant

    《Ant参考教程——Java构建工具的精髓》 Ant,作为一款强大的Java项目构建工具,它的出现极大地简化了软件开发过程中的编译、打包、部署等一系列任务。Ant以其跨平台性、简单易用和功能强大而备受青睐,尤其在Java...

    Ant参考教程,Ant使用指南,Ant全攻略

    "Ant+Tutorial.doc"可能深入到Ant的高级特性,包括使用条件语句(if/else)、属性文件、通配符选择器、宏定义(macrodef)以及自定义任务。通过属性文件,可以外部化配置信息,使构建更具灵活性。宏定义则允许用户...

    apache官方ant-1.10.11版本压缩包

    6. **宏定义(Macrodef)**:宏定义是可重用的任务集合,它们可以封装复杂的构建逻辑,提高代码的可维护性。 7. **插件(Plugins)**:Ant的可扩展性主要通过插件实现,这些插件可以添加新的任务或功能,如Maven...

    Ant权威指南(ant 学习)

    宏定义(MacroDef)则是为常见任务提供模板,简化脚本编写。 七、属性(Properties) 属性在Ant中用于存储值,可以在脚本中引用和传递。它们可以是全局的,也可以在特定的目标或任务中定义。Ant还支持属性文件,...

    apache-ant-1.9.16-bin.zip

    Apache Ant 是一个开源的构建工具,广泛用于Java项目管理,它是Apache软件基金会的产品之一。Ant以其XML为基础的构建文件(build.xml)而著名,这种文件定义了构建过程中的任务序列,使得开发人员能够自动化编译、...

    ANT學習筆記(一)——ANT 結合JUNIT4學習DEMO

    **ANT学习笔记(一)——ANT结合JUNIT4学习DEMO** ANT,全称为Apache Ant,是一个基于Java的构建工具,用于自动化Java项目的构建、编译、测试和部署过程。它通过XML配置文件来定义任务,使得项目构建过程可配置且可...

    Maven 与 Ant 之比较

    标题“Maven 与 Ant 之比较”表明了本文将探讨两种在Java开发中广泛使用的构建工具——Maven和Ant。它们的主要功能是管理和自动化项目的构建过程,包括编译源代码、运行测试、打包应用以及部署。通过对两者进行对比...

    apache-ant-1.9.14.zip

    - **宏定义(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-1.9.6...

    Ant权威指南(介绍ant的好书)

    Ant是Java社区广泛采用的自动化构建工具,它以其灵活性、可扩展性和强大的任务定义能力,成为了许多开发者必备的技能之一。 本书全面讲解了Ant的基本概念、核心组件以及高级用法,旨在帮助读者从零开始掌握Ant的...

    Ant入门教程,使用Ant自动生成JAR文件

    **Ant入门教程——使用Ant自动生成JAR文件** Apache Ant是一个Java库和命令行工具,其任务是驱动构建过程。它是Java开发中的一个重要工具,尤其在自动化构建、编译、测试和部署应用程序时。本教程将带你深入了解Ant...

    ant配置文件

    标题“ant配置文件”指的是Ant项目中的核心文件——build.xml。这个文件是Ant构建过程的蓝图,包含了所有构建任务和它们的依赖关系。它定义了如何编译源代码、打包应用、执行测试以及部署项目。在myEclipse这样的...

    ant.jar下载

    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 ...

    ant递归编译测试源码

    2. `macrodef`: 宏定义(Macrodef)是Ant中的自定义任务机制,它允许用户创建新的任务标签,就像Ant自带的任务一样。通过`macrodef`,你可以封装复杂或重复的构建逻辑,提高代码的可读性和复用性。例如,你可以定义...

    ant ant下载与配置

    ant ant下载 ant配置ant ant下载 ant配置ant ant下载 ant配置

    apache-ant-1.8.2

    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.zip"中,"ant_1.2.6"指的是Ant的一个特定版本——1.2.6。这个版本发布于2002年,相对于当前的版本来说可能较为陈旧,但在当时是一个广泛使用的版本,因为它引入了许多新特性并修复了一些...

Global site tag (gtag.js) - Google Analytics