利用Ant实现项目自动构建测试备份并发布到项目web(3)
<taskdef name="java2html" classname="com.java2html.Java2HTMLTask" />
<target name="javacode" depends="javadoc">
<java2html title="${project.name.info}version(${project.version.info}) Source Code Online View"
simple="no"
tabsize="4"
marginsize="2"
header="true"
footer="true"
encoding="UTF-8"
destination="${code.dir}">
<fileset dir="${src.dir}">
<include name="**/*.java"/>
</fileset>
<javadoc localRef="${doc.dir}" />
</java2html>
</target>
又来了一个新的关键字taskdef,这个是用来做什么的呢?听我慢慢道来。
古人云:“人无完人”,ant的开发者也是这样,他不可能预见到所有用户的需求,也就不能知道当前用户需要哪些task,肯定就会出现用户希望得到的task而ant默认没有支持的情况,所以ant的开发者提供了一个借口,可以让用户自定义自己的task,然后通过taskdef来声明(对要为开发者的这个想法击节叫好,用汤司令了一句名言“高,实在是高”),这样就实现了ant的无限扩展了。Taskdef至少要指明name和classname。Name用来指定这个task的任务的标签名,像javadoc这样的就是标签名(javadoc是ant内置的task),classpath就是这个标签名的要执行的类的方法名,关于这个扩展task的开发我会在其他文章中阐述的,这里就到此为止,大家心里有这个印象就可以了(java2html可以看出是一个把java代码转换成html文档的工具,我使用的是我的修改版,可以支持字符编码,详情见拙著的〈java2html改造手记〉系列文章,当前我已经开发了java2html的图形界面,同样我会另外撰文阐述)。
<target name="compile" depends="init">
<javac srcdir="${src.dir}"
destdir="${bin.dir}"
encoding="${project.encoding.info}"
debug="off"
optimize="on">
<classpath refid="appClassPath" />
</javac>
</target>
这个也很简单,就是一个编译。
<target name="junit" depends="compile">
<junit printsummary="yes" fork="yes" haltonfailure="no">
<classpath>
<pathelement location="${bin.dir}"/>
<pathelement path="${java.class.path}"/>
</classpath>
<formatter type="xml"/>
<batchtest todir="${juit.report.dir}/xml/${DSTAMP}">
<fileset dir="${bin.dir}">
<include name="**/*Test.class" />
</fileset>
</batchtest>
</junit>
<junitreport todir="${juit.report.dir}/xml/${DSTAMP}">
<fileset dir="${juit.report.dir}/xml/${DSTAMP}">
<include name="TEST-*.xml"/>
</fileset>
<report format="noframes" todir="${juit.report.dir}/html/${DSTAMP}"/>
</junitreport>
</target>
这是一个测试target。执行全部的测试代码,并把测试结果生成xml文档并将这个xml文档转换成html文档,junit也是ant默认支持的(java的开源社区的力量实在是太强大了,向广大的开源社区的同志们致敬)。