常用任務標籤


以下介紹幾個常用的<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>
 
在建構程式時,可以使用<delete>刪除指定的目錄,例如:
<target name="clean">
    <delete>
        <files includes="\${javac.includes.binary}"/>
    </delete>
</target>

  • 編譯Java程式
編譯程式的任務是最常用的,可以在編譯程式時,指定一些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>
        <compilerarg line="\${compiler.arg}"/>
    </javac>
</target>

可以參考 屬性、路徑參考  瞭解更多有關路徑設定的細節。
 
  • 執行Java程式
<java>標籤用來執行Java程式,例如:
<java classname="cc.openhome.HelloWorld">
     <classpath path="."/>
     <arg value="\${jvm.arg}" />
</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>

  • 執行其它程式
如果你想執行其它外部程式,可以使用<exec>,例如:
<target name="executeSome">
    <exec executable="C:/Program Files/Some/bin/some" dir="\${execute.dir}"/>
</target>