分享
 
 
 

Top 15 Ant Best Practices

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

本文选自ONJava的“Top 15 Ant Best Practices”,作为备忘的笔记。

1、使用良好的规范编写Ant脚本

使用易于阅读的格式编写Build脚本-在每个Target之间插入空行;使用美观易于阅读的缩进;没行不要超过90个字符;为每个Target和属性挑选有意思的,易于理解的名字等等。

2、把build.xml放在项目的根目录下

把build.xml放在项目根目录下是个好习惯,这样做的好处是,你可以项目工作目录的任何子目录下编译代码,只需使用命令:

ant -find compile。选项-find使Ant在当前目录的所有上级目录中查找Build脚本。

3、尽量只使用一个的Build File

4、提供友好的Build脚本使用帮助

为每个Target加入description属性,这样,可以使用命令:

ant -projecthelp 列出所有Target的描述信息。

或者,也可以为Build脚本编写一个help target,如:

<target name="help"

description="Display detailed usage information">

<echo>Detailed help...</echo>

</target>

5、提供一个Clean Target

每个Build脚本都应该包括一个Target,用来清除所有的生成文件和目录,运行Clean Target以后保留下来的目录应该都是在CVS上能找到的。如:

<target name="clean"

description="Destroys all generated files and dirs.">

<delete dir="${dir.build}"/>

<delete dir="${dir.dist}"/>

</target>

不要自动执行clean,除非你有一个创建所有东西的Target。

6、使用Ant管理依赖

小心设计你的Build脚本,使一个大项目的构建可以按步骤进行。首先,应该编译代码的公共部分,把它们打包成jar文件。然后,编译项目更高层次的其他代码。

这样,如果只需要低层次的公共代码,你不必花时间编译其他高层次的代码。

7、定义和重用文件路径

把路径定义集中在同一个地方能使Build脚本更易于管理和理解。

8、正确定义Target的相互依赖关系

经常检查并重构你的Build脚本,清除Target之间不不必要的依赖关系。

9、使用属性来配置Ant

任何可能需要修改的属性,或是不只使用一次的属性都要在Build脚本开始的地方定义,或在一个单独的Properties文件定义。

10、保持Build过程的独立性

为了获得最大程度的独立性,不要在Build脚本中包含任何位于Build目录下的目录或文件;不要依赖于开发人员的CLASSPATH环境变量。相反,要在Build脚本中使用相对路径。

如果你需要使用使用外部的目录(如tomcat的安装目录等),可以把它定义成一个属性变量。

11、使用版本控制管理

Build脚本是非常重要的配置管理项,应该和代码一样,放在版本控制工具里管理。当你为代码贴标签和版本时,也应该为Build脚本贴标签和版本。

通常情况下,不要把构建的生成物放入版本控制工具。

12、使用Ant作为构建任务的最小公约数

团队内部的开发人员可以自由选择开发工具。因此使用Ant作为构建任务的基线,使代码可以随时构建。

13、使用zipfileset

Ant脚本通常用于创建WAR,JAR,ZIP和EAR文件。这些文件通常需要一个特定的内部文件结构。

一般的办法是把所需的目录和文件复制到一个临时目录,创建出所需的文件结构,然后在临时目录下创建,这是一个笨办法。

更有效的办法是使用zipfileset,它让你可以从任何位置选择文件,按所需的目录结构放入archived文件中。下面是一个例子:

<ear earfile="${dir.dist.server}/payroll.ear"

appxml="${dir.resources}/application.xml">

<fileset dir="${dir.build}" includes="commonServer.jar"/>

<fileset dir="${dir.build}">

<include name="payroll-ejb.jar"/>

</fileset>

<zipfileset dir="${dir.build}" prefix="lib">

<include name="hr.jar"/>

<include name="billing.jar"/>

</zipfileset>

<fileset dir=".">

<include name="lib/jdom.jar"/>

<include name="lib/log4j.jar"/>

<include name="lib/ojdbc14.jar"/>

</fileset>

<zipfileset dir="${dir.generated.src}" prefix="META-INF">

<include name="jboss-app.xml"/>

</zipfileset>

</ear>

在上面的例子中,所有的jar文件都放入EAR文件的lib目录下。先前创建的hr.jar和billing.jar从${dir.build}目录中复制到EAR文件的lib目录下。

14、执行Build脚本的Clean测试

假设Build脚本有clean和compile两个Target,执行以下的测试:

第一步,运行ant clean

第二步,运行ant compile

第三步,再运行ant compile

第三步应该什么都不做,如果代码被重新编译,说明Build脚本有些问题。只有当输入文件发生变化时,Build脚本的Target才应该工作。

15、避免平台相关的Ant包装脚本

有些人喜欢使用批处理命令包装Ant脚本,如编写一个build.bat文件,其中包含命令:ant compile。其实这样做并没有必要。开发人员更喜欢直接使用ant compile,因为它可以在不同的平台下工作。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有