现在时不时来学习一下,感觉java的盘子太大,要想搞得明白、透彻、得心应手还真不是一件容易的事。 上周五去清华科技园的Google培训了一下,感觉还是不错,后来又正值自己休09年的几天年假,就在家没事瞎折腾了一翻。下面是自己对ant的一个小小的应用,供自己学习,如惹发现问题,恳请指正,谢谢! build.xml完整代码
1 <project name="AntCase" default="doc"> 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就可以出现各种各样的意想不到的结果,因为各个任务之间的从属关系是乱的。 |
|