通过ant来实现项目的自动化构建。
只要写一下构建文件(bulid.xml),即可自动完成你预定的任务,例如对java源代码进行编译、测试、打包、生成文档等。ant还可以通过ant插件实现很多应用的调用。
ant样例:
1、在eclipse建立一个java项目:antExample
2、创建lib文件夹,junit.jar放在下面
3、创建一个包:com
4、该包下创建一个类:HelloAnt.java
5、该包下创建一个junit测试类:HelloAntTest.java
6、项目根目录下创建一个build.xml文件,其内容如下:
1 <?xml version="1.0"?>
2 <project name="antExample" default="doc">
3
4 <!-- properies -->
5 <property name="src.dir" value="src" /> <!-- 源代码 -->
6 <property name="report.dir" value="report" /> <!-- 测试报告 -->
7 <property name="classes.dir" value="classes" /> <!-- 编译后class文件 -->
8 <property name="lib.dir" value="lib" /> <!-- 要运用的jar文件 -->
9 <property name="dist.dir" value="dist" /> <!-- 打包后的jar文件 -->
10 <property name="doc.dir" value="doc"/> <!-- API文档 -->
11 <property name="jar.file.name" value="test1.jar"/> <!-- 打包后生成的jar文件的文件名 -->
12 <!-- manifest清单的属性 -->
13 <property name="jar.manifest.version" value="1.0"/>
14 <property name="jar.manifest.created-by" value="jdk1.6.0_05"/>
15 <property name="jar.manifest.main-class" value="com/HelloAnt"/>
16 <property name="jar.manifest.class-path" value=""/>
17
18 <property name="jdk.version" value="1.6"/>
19
20 <!-- 定义classpath -->
21 <path id="master-classpath">
22 <fileset dir="${lib.dir}">
23 <include name="*.jar"/>
24 </fileset>
25 <pathelement path="${classes.dir}"/>
26 </path>
27
28 <target name="delete">
29 <echo>删除classes目录下面的无用文件</echo>
30 <delete dir="${classes.dir}"></delete>
31 <echo>删除dist目录下面的无用jar文件</echo>
32 <delete dir="${dist.dir}"></delete>
33 <echo>删除reprot目录下面的无用测试报告文件</echo>
34 <delete dir="${report.dir}"></delete>
35 <echo>删除doc目录下面的无用java文档</echo>
36 <delete dir="${doc.dir}"></delete>
37 <echo>清除完毕</echo>
38 </target>
39
40 <!-- 初始化任务 -->
41 <target name="init" depends="delete">
42 <echo message="下面开始初始化任务 ${src.dir}"></echo>
43 </target>
44
45 <!-- 编译 -->
46 <target name="compile" depends="init" description="compile the source files">
47 <mkdir dir="${classes.dir}"/>
48 <javac srcdir="${src.dir}" destdir="${classes.dir}" target="${jdk.version}">
49 <classpath refid="master-classpath"/>
50 </javac>
51 </target>
52
53 <!-- 测试 -->
54 <target name="test" depends="compile" description="run junit test">
55 <mkdir dir="${report.dir}"/>
56
57 <junit printsummary="on">
58 <classpath refid="master-classpath" />
59 <batchtest fork="true" todir="${report.dir}">
60 <fileset dir="${src.dir}">
61 <include name="**/*Test.*"/>
62 </fileset>
63 </batchtest>
64 <formatter type="brief" usefile="true"/> <!--如果没有设置formatter,将无法打印出详细的信息-->
65 <formatter type="plain" /><!--默认usefile为true,将会自动创建txt文件-->
66 <formatter type="xml" />
67 </junit>
68 </target>
69
70 <!--根据指定文件夹中的.xml文件生成html格式的测试report-->
71 <target name="report" depends="test">
72 <junitreport todir="${report.dir}" >
73 <fileset dir="${report.dir}">
74 <include name="TEST-*.xml" />
75 </fileset>
76 <report format="frames" todir="${report.dir}" />
77 </junitreport>
78 </target>
79
80 <!-- 打包成jar -->
81 <target name="pack" depends="report" description="make .jar file">
82 <mkdir dir="${dist.dir}" />
83 <jar destfile="${dist.dir}/${jar.file.name}" basedir="${classes.dir}">
84 <manifest>
85 <attribute name="Manifest-Version" value="${jar.manifest.version}"/>
86 <attribute name="Created-By" value="${jar.manifest.created-by}"/>
87 <attribute name="Main-Class" value="${jar.manifest.main-class}"/>
88 <attribute name="Class-Path" value="${jar.manifest.class-path}"/>
89 </manifest>
90 <exclude name="**/*Test.*" />
91 <exclude name="**/Test*.*" />
92 </jar>
93 </target>
94
95 <!-- 输出api文档 -->
96 <target name="doc" depends="pack" description="create api doc">
97 <mkdir dir="${doc.dir}" />
98 <javadoc
99 sourcepath="${src.dir}"
100 packagenames="com.*"
101 destdir="${doc.dir}"
102 author="true"
103 version="true"
104 use="true"
105 splitindex="true"
106 linksource="false"
107 windowtitle="antExample API">
108 <doctitle><![CDATA[<h1>antExample project</h1>]]></doctitle>
109 <bottom><![CDATA[<i>All Rights Reserved.</i>]]></bottom>
110 </javadoc>
111 </target>
112
113 </project>