From Gossip@caterpillar

JUnit Gossip: 常用任務標籤

以下介紹幾個常用的<target>撰寫:

設定屬性

當您在編寫build.xml時發現到有一些屬性設定出現過兩次以上,例如目錄的指定,您可以將這些屬性使用<property>加以設定,這樣以後若要改變屬性設定,就只要改變對應的<property>即可,例如:
<target name="setProperties">
    <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>
 
您可以參考 取得、提供屬性 瞭解更多的細節。


提供 help 資訊

您可以提供一些ant檔案的help資訊,例如:
<target name="help" description="help info">
    <echo message="help information!!"/>
    <echo>Help! Help!</echo>
    <echo><![CDATA[ 
       Here is a help info.
       Write your own information here.
       ]]></echo>
</target>
 
之後在執行ant加上-projecthelp就會自動顯示help這個target的內容,如果有加上description,當使用ant -projecthelp時也會一併顯示該訊息。


檔案的複製、建立與刪除

在每一次建構程式前,您會想要複製前一次的建構結果,您可以使用<copy>來指定複製檔案,例如:
<target name="backup">
   <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>
 

您可以參考 路徑參考 瞭解更多有關路徑設定的細節。


執行程式

<java>標籤用來執行Java程式,例如:
<java classname="onlyfun.caterpillar.HelloWorld">
     <classpath path="."/>
</java>

 

製作 jar 檔案

您也可以使用<jar>來為您將編譯完成的檔案打包為jar(Java Archive File),並可以指定manifest檔案,例如:
<target name="jar">
    <jar jarfile="${jar.file}"
         manifest="./META-INF/MANIFEST.MF"
         basedir="${classes.dir}"/>
</target>
 
如果有提供MANIFEST.MF檔案,才需要設定manifest屬性,為了完成jar打包的任務,您可以在META-INF目錄下提供一個 MANIFEST.MF檔案,例如:

  • MANIFEST.MF
Manifest-Version: 1.0 
Created-By: Justin
Main-Class: JNameIt
Class-Path: JNameIt.jar

製作 war 檔案

對於網站應用程式的佈署,您可以使用<war>將所有相關的檔案包裝為war(Web Application Archive),例如:
<target name="war">
    <war destfile="bin/guestbook.war"
         webxml="src/webapp/WEB-INF/web.xml">
        <classes dir="target/classes"/>
        <lib file="beantools.jar"/>
    </war>
</target>