首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

Ant高级特点-模块化

2012-07-24 
Ant高级特性-模块化?Ant作为一种编程的辅助工具,可以看作与脚本一个级别的东西。写一个build.xml,用它来帮

Ant高级特性-模块化

?

Ant作为一种编程的辅助工具,可以看作与脚本一个级别的东西。写一个build.xml,用它来帮助你干各种小杂活,应该是一件很简单的事情。但是如果是一个很大的工程呢?如果你需要写很多的build.xml,那么与其他脚本语言一样,由于维护和代码重用的压力,你必须考虑到一个因素:模块化。到1.6版为止,Ant已经提供了很多Task,可以帮助实现Ant脚本的模块化。 1. Property
  Property Task除了能够定义单个的属性,还可以从一个属性定义文件定义多个property。把公用的属性放到属性文件中,各个build.xml中都载入此属性文件,就可以避免在每个build.xml中重复定义这些属性。2. AntCall, Ant和SubAnt
AntCall可以理解为简单的函数调用。举一个例子就清楚了:
  
<?xml version="1.0" ?><project name="testAnt" default="commonTarget" >?<target name="commonTarget">??<echo message="${test.param}"/>?</target>??<target name="callingTarget">??<antcall target="commonTarget">???<param name="test.param" value="Modulation" />??</antcall></target></project>

?输出结果如下所示:>ant callingTarget

<?xml version="1.0" ?><project name="testAnt" default="test" ><macrodef name="showModule"> <attribute name="v" default="NOT SET"/> <element name="some-tasks" optional="yes"/> <sequential> <echo>v is @{v}</echo> <some-tasks/> </sequential></macrodef><target name="test"> <showModule v="This is V"> <some-tasks><echo>this is a test</echo> </some-tasks> </showModule></target></project>

运行结果:>ant?

<?xml version="1.0" ?><project><property name="project.name" value="Ant Modulazation" /><target name="commonTarget"><echo message="${test.param}" /></target> <macrodef name="showModule"> <attribute name="test.param" default="NOT SET"/> <sequential> <echo message="@{test.param}" /> </sequential></macrodef></project>

?

<?xml version="1.0" ?><project name="testCommon" default="callingTarget"><import file="common.xml" /> <target name="callingTarget" depends="testMacro">    <antcall target="commonTarget"><param name="test.param" value="Modulation" />    </antcall></target> <target name="testMacro">    <showModule test.param="Modulation" /></target></project>

??

运行结果如下:>ant

运行结果 写道testMacro:?
??????????[echo] Modulation
callingTarget:
commonTarget:?
??????????[echo] Modulation

?注意:在common.xml中,不能对project元素设置属性;另外,不要试图使用重名的property,或target以获取覆盖

的效果,因为Ant毕竟不是编程语言。

热点排行