通過ant來實現(xiàn)項目的自動化構(gòu)建。
只要寫一下構(gòu)建文件(bulid.xml),即可自動完成你預定的任務(wù),例如對java源代碼進行編譯、測試、打包、生成文檔等。ant還可以通過ant插件實現(xiàn)很多應(yīng)用的調(diào)用。
ant樣例:
1、在eclipse建立一個java項目:antExample
2、創(chuàng)建lib文件夾,junit.jar放在下面
3、創(chuàng)建一個包:com
4、該包下創(chuàng)建一個類:HelloAnt.java
5、該包下創(chuàng)建一個junit測試類:HelloAntTest.java
6、項目根目錄下創(chuàng)建一個build.xml文件,其內(nèi)容如下:
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 <!-- 初始化任務(wù) -->
41 <target name="init" depends="delete">
42 <echo message="下面開始初始化任務(wù) ${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"/> <!--如果沒有設(shè)置formatter,將無法打印出詳細的信息-->
65 <formatter type="plain" /><!--默認usefile為true,將會自動創(chuàng)建txt文件-->
66 <formatter type="xml" />
67 </junit>
68 </target>
69
70 <!--根據(jù)指定文件夾中的.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>