General Tasks:
- delete
- copy
- mkdir
- javac
- jar
構建一個基本的程式有幾個常用的任務,像是設定通用屬性、清除前一次構建的檔案或目錄、複製檔案、建立目標目錄、編譯程式、打包程式等等,以下介紹如何在build.xml中編寫對應的任務目標。
當您在編寫build.xml時發現到有一些屬性設定出現過兩次以上,例如目錄的指定,您可以將這些屬性使用<property>加以設定,這樣以後若要改變屬性設定,就只要改變對應的<property>即可,例如:
<target name="setProperties" description="setup the common properties">
<property name="src.dir" value="src"/>
<property name="classes.dir" value="classes"/>
<property name="lib.dir" value="lib"/>
<property name="backup.dir" value="bak"/>
<property name="jar.file" value="${lib.dir}/JNameIt.jar"/>
</target>
在每一次構建程式前,您會想要刪除前一次的構建結果,您可以使用<delete>來指定刪除目錄或檔案,例如:
<target name="clean" description="clean up the previous built files or dirs">
<delete dir="${classes.dir}"/>
<delete file="${jar.file}"/>
</target>
在每一次構建程式前,您會想要複製前一次的構建結果,您可以使用<copy>來指定複製檔案,例如:
<target name="backup" description="backup some old files">
<copy todir="${backup.dir}">
<fileset dir="${classes.dir}"/>
</copy>
</target>
在構建程式時,您可以使用<mkdir>建立一些必要的目錄,例如:
<target name="prepareDir" description="prepare necessary dirs">
<mkdir dir="${classes.dir}"/>
<mkdir dir="${lib.dir}"/>
<mkdir dir="${backup.dir}"/>
</target>
編譯程式的任務當然是最常用的,您還可以在編譯程式時,加入一些CLASSPATH的指定,這是個相當方便的功能 ,例如:
<target name="compile" description="compile the source files">
<javac srcdir="./src" destdir="${classes.dir}">
<classpath>
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
</fileset>
</classpath>
</javac>
</target>
您也可以使用<jar>來為您將編譯完成的檔案打包為jar檔案,並可以指定manifest檔案,例如:
<target name="package" description="package all class files">
<jar jarfile="${jar.file}" manifest="./META-INF/MANIFEST.MF" basedir="${classes.dir}"/>
</target>
為了完成jar打包的任務,您必須在META-INF目錄下提供一個manifest檔案,例如:
Manifest-Version: 1.0
Created-By: Justin
Main-Class: JNameIt
Class-Path: JNameIt.jar