Top 15 Ant Best Practices

原创 2005年05月28日 16:17:00
本文选自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,因为它可以在不同的平台下工作。

Top 20+ MySQL Best Practices【sql优化】 .

Database operations often tend to be the main bottleneck for most web applications today. It’s not o...
  • ljd8210
  • ljd8210
  • 2017年05月27日 11:10
  • 184

Top 20 OpenSSH Server Best Security Practices

Top 20 OpenSSH Server Best Security Practices by NIX Craft on July 24, 2009 · 139 comments· LAST ...
  • lqzixi
  • lqzixi
  • 2014年04月22日 14:55
  • 574

Top 20+ MySQL Best Practices

转载自:原文出处 Database operations often tend to be the main bottleneck for most web applications today. ...

Dynamic-Link Library Best Practices

转自MSDN:https://msdn.microsoft.com/en-us/library/windows/desktop/dn633971(v=vs.85).aspx 主要记述了加载器在加载一...

Selenium - Selenium best practices

Use page objects pattern, and consider use Selenium PageFactory.Preferred selector order : id > name...
  • chimomo
  • chimomo
  • 2016年07月22日 10:42
  • 318

Differential signaling best practices

差分信号的理解

[Django1.5]two-scoops-django-best-practices 笔记二

chapter 3 django工程的布局  /     /         / Top level:Repository Root 最上层是工程根目录的绝对路径 这里还...

[Django1.5] two-scoops-django-best-practices 读书笔记

[Django1.5] two-scoops-django-best-practices 读书笔记 说明:本文由@易枭寒(Email:yixiaohan121318@gmail.com   ...

45 Useful JavaScript Tips, Tricks and Best Practices

By Saad Mousliki As you know, JavaScript is the number one programming language in the world, the...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Top 15 Ant Best Practices
举报原因:
原因补充:

(最多只允许输入30个字)