以下介紹幾個常用的<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>
<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資訊,例如:
之後在執行ant加上-projecthelp就會自動顯示help這個<target>的內容,如果有加上description屬性,當使用ant -projecthelp時也會一併顯示該訊息。
<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>
<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>來指定複製檔案,例如:
在建構程式時,可以使用<mkdir>建立一些必要的目錄,例如:
在建構程式時,可以使用<delete>刪除指定的目錄,例如:
<target name="backup">
<copy todir="\${backup.dir}">
<fileset dir="\${classes.dir}"/>
</copy>
</target>
<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>
<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>
<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>
可以參考 屬性、路徑參考 瞭解更多有關路徑設定的細節。
<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>
<classpath path="."/>
<arg value="\${jvm.arg}" />
</java>
- 製作JAR檔案
可以使用<jar>來將編譯完成的檔案打包為JAR(Java Archive File),並可以指定manifest檔案,例如:
如果有提供MANIFEST.MF檔案,才需要設定manifest屬性,為了完成JAR打包的任務,可以在META-INF目錄下提供一個 MANIFEST.MF檔案,例如:
<target name="jar">
<jar jarfile="\${jar.file}"
manifest="./META-INF/MANIFEST.MF"
basedir="\${classes.dir}"/>
</target>
<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
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>
<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>
<target name="executeSome">
<exec executable="C:/Program Files/Some/bin/some" dir="\${execute.dir}"/>
</target>