现在项目使用ant来管理,整理了一个常用的Ant模板文件,包括:编译、运行Junit测试用例、CheckStlye、从Vss取版本、javadoc等。希望有用。
<?xml version="1.0" encoding="gb2312"?>
<!--
本模板文件提供了以下功能:
1.编译java代码;
2.产生java代码对应的javaDoc;
3.检查java代码的编码规范;
4.编译并运行java代码对应的junit测试代码
5.从Vss中获取程序
-->
<project name="Fog Project" default="all" basedir=".">
<!-- 环境变量 -->
<property environment="env"/>
<!-- 设置junit报告的xsl文件目录 -->
<property name="junit.styleDir" value="${env.ANT_HOME}/etc"/>
<!-- 源代码目录 -->
<property name="src.code" value="src"/>
<!-- 源代码对应的junit目录 -->
<property name="src.junit" value="junit"/>
<!-- 引用包所在目录 -->
<property name="lib.dir" value="lib"/>
<!-- 目标jar名称 -->
<property name="lib.jar" value="fog.jar"/>
<!-- checkstyle configuration -->
<property name="checkstyle.config" value="${lib.dir}/checkstyle33.xml"/>
<!-- 设置checkstyle的xsl文件 -->
<property name="checkstyle.xsl" value="${lib.dir}/checkstyle-frames.xsl"/>
<taskdef resource="checkstyletask.properties"
classpath="${lib.dir}/checkstyle-all-3.3.jar"/>
<!-- VSS配置 -->
<property name="vss.ssdir" value="D:\Program Files\vss\win32\"/>
<property name="vss.svrdir" value="Z:"/>
<property name="vss.path" value="/fog/implement"/>
<!-- 输出文档 -->
<property name="doc.dir" value="doc"/>
<property name="doc.api" value="${doc.dir}/api"/>
<!-- junit report -->
<property name="doc.junitReport" value="${doc.dir}/junitReport"/>
<!-- checkstyle report -->
<property name="doc.checkstyleReport" value="${doc.dir}/checkstyleReport"/>
<!-- 与开发包结构相同 -->
<property name="javadoc.package" value="fog.*"/>
<!-- 输出二进制文件 -->
<property name="dist.root" value="projDist"/>
<property name="dist.proj" value="${dist.root}/proj"/>
<property name="dist.classes" value="${dist.proj}/classes"/>
<property name="dist.lib" value="${dist.proj}/lib"/>
<property name="dist.junit" value="${dist.root}/junit"/>
<!-- classpath -->
<path id="classpath">
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
</fileset>
<fileset dir="web/WEB-INF/lib">
<include name="**/*.jar"/>
</fileset>
<fileset dir="${dist.lib}">
<include name="**/*.jar"/>
</fileset>
<fileset dir="junit_lib">
<include name="**/*.jar"/>
</fileset>
</path>
<target name="init">
<mkdir dir="${doc.dir}"/>
<mkdir dir="${dist.root}"/>
<mkdir dir="${dist.proj}"/>
<mkdir dir="${dist.lib}"/>
<tstamp/>
<echo message="${TSTAMP}"></echo>
</target>
<target name="all" depends="compilesrc, javadoc, checkstyle"/>
<!-- 编译源文件 -->
<target name="compilesrc" depends="init">
<mkdir dir="${dist.classes}"/>
<javac destdir="${dist.classes}" deprecation="on">
<src path="${src.code}"/>
<classpath refid="classpath"/>
</javac>
<jar jarfile="${dist.lib}/${lib.jar}" basedir="${dist.classes}">
<include name="**/*.class"/>
</jar>
</target>
<!-- 产生javadoc -->
<target name="javadoc" depends="init">
<mkdir dir="${doc.api}"/>
<javadoc packagenames="${javadoc.package}" sourcepath="${src.code}"
private="yes" defaultexcludes="yes" destdir="${doc.dir}/api">
<classpath refid="classpath"/>
</javadoc>
</target>
<!-- 编译Junit文件 -->
<target name="compilejunit" depends="compilesrc">
<mkdir dir="${dist.junit}"/>
<javac destdir="${dist.junit}" deprecation="on">
<src path="${src.junit}"/>
<classpath refid="classpath"/>
</javac>
</target>
<!-- 运行checkstyle检查代码规范 -->
<target name="checkstyle" depends="init">
<mkdir dir="${doc.checkstyleReport}"/>
<checkstyle config="${checkstyle.config}">
<fileset dir="${src.code}" includes="**/*.java"/>
<formatter type="plain"/>
<formatter type="xml" toFile="${doc.checkstyleReport}/checkstyle_report.xml"/>
</checkstyle>
<style in="${doc.checkstyleReport}/checkstyle_report.xml" out="${doc.checkstyleReport}/checkstyle_report.html" style="${checkstyle.xsl}"/>
</target>
<!-- 运行junit -->
<target name="junit" depends="compilejunit">
<mkdir dir="${doc.junitReport}"/>
<copy todir="${dist.junit}">
<fileset dir="junit_lib">
<exclude name="**/*.jar"/>
</fileset>
<fileset dir="${src.code}">
<include name="fog.hbm.xml"/>
</fileset>
</copy>
<junit printsummary="yes" haltonfailure="no">
<classpath>
<path refid="classpath"/>
<pathelement location="${dist.junit}"/>
</classpath>
<formatter type="brief" usefile="false"/>
<formatter type="xml"/>
<batchtest todir="${doc.junitReport}">
<fileset dir="${dist.junit}" includes="**/*Test.class" />
</batchtest>
</junit>
<junitreport todir="${doc.junitReport}">
<fileset dir="${doc.junitReport}">
<include name="TEST*-*.xml"/>
</fileset>
<report format="frames" styledir="${junit.styleDir}" todir="${doc.junitReport}"/>
</junitreport>
</target>
<!-- 从Vss中获取最新版本 -->
<target name="getVersion" depends="">
<vssget
vsspath="${vss.path}" localpath="." login="codeline,codeline"
ssdir="${vss.ssdir}" serverPath="${vss.svrdir}" autoresponse="N" recursive="true"
quiet="true" />
</target>
<!-- 清除产生的类、junit相关类、文档 -->
<target name="clean">
<delete dir="${dist.classes}"/>
<delete dir="${dist.junit}"/>
<delete dir="${doc.api}"/>
<delete dir="${doc.junitReport}"/>
<delete dir="${doc.checkstyleReport}"/>
</target>
<!-- 清除所有输出结果 -->
<target name="cleanall" depends="clean">
<delete dir="${doc.dir}"/>
<delete dir="${dist.root}"/>
</target>
</project>
--------------------------------------------------------------------------------------------------------------------------------
我常用的ant的操作,方便自己查询,所以传到网上,如果有朋友觉得不够,请补充:
主要的内容有:
(1)建立一个项目
(2)建立属性
(3)对数据库的操作
(4)javac编译
(5)删除目录
(6)建立目录
(7)拷贝文件群
(8)jar为一个包
(9)拷贝单个文件
(10)运行
有更多更好的常用的,我没想到的,希望大家补充。
url="jdbc:oracle:thin:@192.168.0.1:1521:oa"
userid="oa" password="oa"
onerror="continue"
print="yes"
src="./demo.ddl"/>
destdir="${root}/oa/"
includes="*.java"
classpath="${CLASSPATH};${CLIENT_CLASSES}/utils_common.jar"
/>
----------------------------------------------------------------------------------------------------------------
generates the ${name}.jar file" />
compiles the source code" />
generates the API documentation" />
cleans up the directory" />
destdir="${build.dest}"
debug="${debug}"
optimize="${optimize}">
basedir="${build.dest}"
includes="**"/>
sourcepath="${build.src}"
destdir="${build.javadocs}"
author="true"
version="true"
use="true"
splitindex="true"
windowtitle="${Name} API"
doctitle="${Name}">
缺省任务:usage 打印帮助文档,告诉有那些任务选项:可用的有build, jar, javadoc和clean.
初始化环境变量:init
所有任务都基于一些基本环境变量的设置初始化完成,是后续其他任务的基础,在环境初始化过程中,有2点比较可以方便设置:
1 除了使用却缺省的property设置了JAVA源路径和输出路径外,引用了一个外部的build.properties文件中的设置,
这样大部分简单配置用户只要会看懂build.properties就可以了,毕竟XML比起key value的属性文件还是要可读性差一些。用build.properties也可以方便其他用户从编译的细节中解放出来。
2 CLASSPATH设置:使用了其中的:
则相当于设置了:CLASSPATH=/path/to/resin/lib/jsdk23.jar; /path/to/project/lib/*.jar;
文件复制:prepare-src
创建临时SRC存放目录和输出目录。
编译任务:build
编译时的CLASSPATH环境通过一下方式找到引用一个path对象
打包任务:jar
对应用打包生成项目所写名的.jar文件
basedir="${build.dest}"
includes="**"/>
生成JAVADOC文档任务: javadoc
sourcepath="${build.src}"
destdir="${build.javadocs}"
author="true"
version="true"
use="true"
splitindex="true"
windowtitle="${Name} API"
doctitle="${Name}">
清空临时编译文件:clean
TODO:
更多任务/扩展:(样例)
- 测试任务:JUnit测试
- 代码风格检查任务:CheckStyle,Jalopy等
- 邮件警报任务:可以把以上这些任务的输出警告发送到制定的用户列表中,这个任务可以设置每天自动运行。