转自http://starrynight.blogdriver.com/starrynight/634792.html
本文选自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,如:
xml 代码
- <target name="help" description="Display detailed usage information">
- <echo>Detailed help...</echo>
- </target>
5、提供一个Clean Target
每个Build脚本都应该包括一个Target,用来清除所有的生成文件和目录,运行Clean Target以后保留下来的目录应该都是在CVS上能找到的。如:
xml 代码
- <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文件中。下面是一个例子:
xml 代码
- <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,因为它可以在不同的平台下工作。
<target name="clean"><delete dir="${dir.build}"><ear earfile="${dir.dist.server}/payroll.ear"><fileset includes="commonServer.jar" dir="${dir.build}"><fileset dir="${dir.build}"><zipfileset prefix="lib" dir="${dir.build}"><include name="hr.jar"><fileset dir="."><include name="lib/jdom.jar"><include name="lib/log4j.jar"></include></include></fileset></include></zipfileset></fileset></fileset></ear></delete></target>
分享到:
- 2007-01-16 10:59
- 浏览 1577
- 评论(0)
- 论坛回复 / 浏览 (0 / 2653)
- 查看更多
相关推荐
### Rational Unified Process (RUP) 最佳实践 #### 什么是Rational Unified Process (RUP)? Rational Unified Process(简称RUP)是一种软件工程过程,它为软件开发团队提供了一个结构化的方法来指导整个软件开发...
Vue.js Design Patterns and Best Practices Vue.js Design Patterns and Best Practices
Chapter 9: Best Practices for Function-Based Views Chapter 10: Best Practices for Class-Based Views Chapter 11: Form Fundamentals Chapter 12: Common Patterns for Forms Chapter 13: Templates: Best ...
NHTSA_Cybersecurity Best Practices for Modern Vehicles
Best Practices packages are currently available: 1. SAP Best Practices for SAP S/4HANA - This package provides preconfigured processes and content specifically designed for the SAP S/4HANA platform. ...
java database best practices
To gain these benefits, however, team members need common troubleshooting skills and practices.In DevOps Troubleshooting: Linux Server Best Practices, award-winning Linux expert Kyle Rankin brings ...
#### 标题解读:“Oracle APEX Best Practices” 该标题明确指出本文档将介绍在使用 Oracle APEX 进行开发时应遵循的最佳实践。对于那些希望提高 Oracle APEX 应用程序质量和性能的开发者来说,这是一个非常宝贵的...
High Performance Spark Best Practices for Scaling and Optimizing Apache Spark 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
android-database-best-practices android-database-best-practices android-database-best-practices android-database-best-practices android-database-best-practices
React Design Patterns and Best Practices 英文mobi 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书
React Design Patterns and Best Practices 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书
Perl Best Practices author Damian Conway explains that rules, conventions, standards, and practices not only help programmers communicate and coordinate with one another, they also provide a reliable...
Java Enterprise Best PracticesJava Enterprise Best Practices
Django Design Patterns and Best Practices 英文mobi 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书
Data Visualization — Best Practices and Foundations.pdf Data Visualization — Best Practices and Foundations.pdf
Practical Web Scraping for Data Science Best Practices and Examples with Python 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书
《Pro .NET Best Practices》是一本深入探讨.NET开发最佳实践的专业书籍。这本书旨在帮助开发者们提升他们的编程技能,遵循高效、可维护、可扩展的代码编写标准,从而提高软件项目的质量和生产效率。以下是对该书...