Thursday, December 18, 2008

Long time not be here...

This blog has been create in 2006. But I have not been here for a long time. And it still right here make me very happy and a little surprise.

And I am really amazed by the news that Google has acquired Blogger.

So I decided to use this blog again. Maybe I will right it with English.

For Chinese blog, I will use http://blog.163.com/wind13

Saturday, August 12, 2006

J2EE学习——Ant的十五大最佳实践

Ant 工具是一个非常好的自动执行工具,可以定义很多具体的工作,如:拷贝、创建目录、编译生成代码、单元测试、打包部署等;
使用Ant的一些原则和规范,参见这篇文章:ANT十五大最佳实践

  1. 采用一致的编码规范;精选含意明确、容易读懂的词汇来命名任务和属性。
  2. build.xml放在项目根目录中;
  3. 使用单一的构建文件;
  4. 提供良好的帮助说明;通过description属性给予说明,可由ant -projecthelp显示出帮助,同时在代码中必要的地方加上<!--注释-->
  5. 提供清除任务;执行清空任务后还存在的文件都应处在版本控制系统的管理之下。不必要每次构建都先执行清空任务。
  6. 使用ANT管理任务从属关系;首先,编译公共应用代码,将编译结果打成JAR包文件。然后,编译上一层的项目代码,编译时依靠第一步产生的JAR文件。不断重复这一过程,直到最高层的代码编译完成。
  7. 定义并重用文件路径;文件路径在一个地方一次性集中定义,并在整个构建文件中得到重用。
  8. 定义恰当的任务从属关系;应该定期检查任务的从属关系以保证构建工作得到正确执行。提供一套"专家"任务让你能够手工执行个别的构建步骤,这些任务不提供完整的构建过程,但是让那些专家用户在快速而恼人的编码期间能够跳过某些步骤。
  9. 使用属性;任何需要配置或可能发生变化的信息都应作为Ant属性定义下来。属性既可以在构建文件头部定义,也可以为了更好的灵活性而在单独的属性文件中定义。或者可以使用外部属性文件,如<property
    file="sample.properties"/>,在属性文件 sample.properties中:
    dir.build=build
    dir.src=src
    jdom.home=../java-tools/jdom-b8
    jdom.jar=jdom.jar
    jdom.jar.withpath=${jdom.home}/build/${jdom.jar}
  10. 保持构建过程独立;为了最大限度的扩展性,不要应用外部路径和库文件。最重要的是不要依赖于程序员的CLASSPATH设置。
    当你必须引用外部路径时,应将路径定义为属性。使程序员能够用适合他们自己的机器环境的参数重载这些属性。
    你也可以使用以下语法引用环境变量:
    <property environment="env"/>
    <property name="dir.jboss" value="${env.JBOSS_HOME}"/>
  11. 使用版本控制系统;构建文件是一个重要的制品,应该像代码一样进行版本控制。当你标记你的代码时,也应用同样的标签标记构建文件。除构建文件之外,你还应在版本控制中维护第三方JAR文件。通常应避免在版本控制系统中存放构建成果。
  12. 把Ant作为"最小公分母"--公共基线;不管使用何种IDE,要建立所有程序员都能够使用的Ant构建文件。要建立一个程序员在将新代码提交版本控制系统前必须执行Ant构建文件的规则。
  13. 使用zipfileset属性;而不是先拷贝到临时目录后再进行压缩,使用如下:
    <zipfileset dir="${dir.build}" prefix="lib">
    <include name="hr.jar"/>
    <include name="billing.jar"/>
    </zipfileset>
    prefix属性指定了其在目标压缩文件中的目标路径,dir属性指定了源路径。
  14. 测试Clean任务;构建文件应该只在与输出文件相关联的输入文件发生变化时执行任务。测试:第一步,执行ant clean;第二步,执行ant compile;第三步,再执行ant compile。第三步应该不作任何事情。
  15. 避免特定平台的Ant封装;不要使用compile.bat之类的脚本封装,因为不适用所有平台,所以只会增加其他用户的困扰。