转自http://www.cnblogs.com/blackcore/archive/2009/12/18/1627204.html
Eclipse 使用Apache-Ant 小记
现在时不时来学习一下,感觉java的盘子太大,要想搞得明白、透彻、得心应手还真不是一件容易的事。
上周五去清华科技园的Google培训了一下,感觉还是不错,后来又正值自己休09年的几天年假,就在家没事瞎折腾了一翻。下面是自己对ant的一个小小的应用,供自己学习,如惹发现问题,恳请指正,谢谢!
2
3 <!-- 相关属性的定义 -->
4 < property name ="src.dir" value ="src" description ="java源文件" />
5 < property name ="report.dir" value ="report" />
6 < property name ="classes.dir" value ="classes" description ="编译java源文件后的class文件" />
7 < property name ="lib.dir" value ="lib" description ="存放编译和运行用到的所有jar文件" />
8 < property name ="dist.dir" value ="dist" description ="存放打包后的jar文件" />
9 < property name ="doc.dir" value ="doc" description ="存放API文档" />
10 < property name ="web.dir" value ="web" description ="存放JSP等web文件" />
11
12 <!-- 定义classpath -->
13 < path id ="master-classpath" >
14 < fileset file ="${lib.dir}/*.jar" />
15 < pathelement path ="${classes.dir}" />
16 </ path >
17
18 <!-- 初始化任务 -->
19 < target name ="init" >
20 </ target >
21
22 <!-- 清理相关文件 否则无法生成新的文件 -->
23 < target name ="clean" depends ="init" description ="Destroys all generated files and dirs." >
24 < delete dir ="${classes.dir}" failonerror ="false" />
25 < delete dir ="${dist.dir}" failonerror ="false" />
26 </ target >
27
28 <!-- 编译 -->
29 < target name ="compile" depends ="clean" description ="compile the source files" >
30 < mkdir dir ="${classes.dir}" />
31 < javac srcdir ="${src.dir}" destdir ="${classes.dir}" target ="1.4" >
32 < classpath refid ="master-classpath" />
33 </ javac >
34 </ target >
35
36 <!-- 测试 -->
37 <!-- <target name="test" depends="clean,compile" description="run junit test">
38 <mkdir dir="${report.dir}" />
39 <junit printsummary="on" haltonfailure="false" failureproperty="tests.failed" showoutput="true">
40 <classpath refid="master-classpath" />
41 <formatter type="plain" />
42 <batchtest todir="${report.dir}">
43 <fileset dir="${classes.dir}">
44 <include name="**/*Test.*" />
45 </fileset>
46 </batchtest>
47 </junit>
48 <fail if="tests.failed">
49 <echo>失败的文件</echo>
50 </fail>
51 </target>
52 -->
53
54 <!-- 打包成jar -->
55 <!-- <target name="pack" depends="test" description="make .jar file"> -->
56 < target name ="pack" depends ="clean,compile" description ="make .jar file" >
57 < mkdir dir ="${dist.dir}" />
58 < jar destfile ="${dist.dir}/AntCase.jar" basedir ="${classes.dir}" >
59 < exclude name ="**/*Test.*" />
60 < exclude name ="**/Test*.*" />
61 </ jar >
62 </ target >
63
64 <!-- 输出api文档 -->
65 < target name ="doc" depends ="pack" description ="create api doc" >
66 < mkdir dir ="${doc.dir}" />
67 < javadoc destdir ="${doc.dir}" author ="true" version ="true" use ="true" windowtitle ="Test API" >
68 < packageset dir ="${src.dir}" defaultexcludes ="yes" >
69 < include name ="example/**" />
70 </ packageset >
71 < doctitle >
72 <![CDATA[ <h1>AntCase Test</h1> ]]> </ doctitle >
73 < bottom >
74 <![CDATA[ <i>All Rights Reserved.</i> ]]> </ bottom >
75 <!-- <tag name="todo" scope="all" description="To do:" /> -->
76 </ javadoc >
77 </ target >
78 </ project >
project 结构图(主要用于说明Project中的结构安排,以便ant的使用):
文件目录结构图(这个图贴出来是为了为写作记录提供方便):
执行方式:(在cmd中或直接在eclipse中执行run as -> ant build就OK)
可以看到每个任务的执行步骤都有执行过程信息,最后Build Successful...
同样,在Console输出的信息也同于cmd中执行ant一样。
感觉上,当开始一个新项目时,首先应该编写好Ant构建文件。
Ant文件明确地定义构建的过程,并被团队中的每个程序员使用,更为重要的是这个build.xml文件必须足够精细。
如果在GWT应用,这样一个过程是比较长的,毕竟编译成javascript文件需要的文件还是有点长的(比较耗内存)。
很明显这是一个xml文件,所以在编写时务必遵守xml的语法格式,习题把xml编码写得简洁,易懂,并且提供足够清晰明了的注释说明,如果xml文件太大,看起来就非常费劲咯。
每个build.xml文件应该有一个清除任务,在23~26行就有,否则等下一次再打包时会有问题(每次执行完ant后,可以在dist目录下看一下生成的jar/war文件是否是刚才ant后的最新文件,否则就是不成功的)。
每个build.xml文件中的任务都应该有非常明确的从属关系,否则一执行ant就可以出现各种各样的意想不到的结果,因为各个任务之间的从属关系是乱的。