如今咱們已經瞭解如何定義屬性、依賴關係以及如何運行ant,接下來咱們將學習怎樣使用ant編譯java源代碼並生成jar文件。java
編譯源代碼ide
因爲Ant的主要目標就是生成java應用程序,它內置了javac任務來調用java的編譯器。此任務通常定義以下學習
<javac srcdir=」src」 destdir=「build」/>ui
Ant會尋找src目錄下全部以.java爲擴展名的全部文件,並對他們調用javac編譯器,從而在build目錄下生成class文件。Javac任務不只會編譯須要編譯的源文件,若是某個類文件已經存在,可是對應的源代碼文件自從該類文件生成後沒有改過,則不會從新編譯此源代碼文件。spa
建立jar文件code
在編譯java源文件以後,一般會將其歸檔打包爲一個jar文件。Jar任務一般以下定義xml
<jar destfile=」wufengtinghai.alm.jar」 basedir=」build」/>blog
此任務將建立一個wufengtinghai.alm.jar文件,並將build下的全部文件打包到此jar文件中。若是沒有指定清單文件,Ant則會生成一個基本的清單文件。Manifest屬性容許制定一個清單文件,同時也可使用manifest任務定義清單文件。ip
<jar destfile="wufengtinghai.alm.jar" basedir="classes"> <manifest> <attribute name="Built-By" value="${user.name}"/> <attribute name="project" value="wufengtinghai.alm"/> </manifest> </jar>
生成時間戳 get
在生成環境中使用當前時間和日期,能夠以此種方式標記某個生成什麼時候生成輸出的。Ant提供了簡單易用的tstamp任務能夠完成這個功能。這個任務一般在生成過程開始時調用。Tstamp不產生任何的輸出;相反,它會根據當前系統時間和日期設置Ant的相關屬性。
DSTAMP:設置爲當前日期,默認格式爲yyymmdd,例如20150606
TSTAMP:設置爲當前時間,默認格式爲hhmm,例如1020
TODAY:設置爲當前日期,帶完整的月份,例如2015年6月6日
那咱們能夠將咱們的jar文件定義爲以下
<jar destfile="lucene-${DSTAMP}.jar" basedir="classes"/>
最終咱們的生成文件autobuildjava.xml以下
<?xml version="1.0"?> <project default="dist" name="autobuildjava" basedir="../"> <description>A simple auto build Java project</description> <property name="srcDir" location="src" /> <property name="buildDir" location="build" /> <property name="distDir" location="dist" /> <target name="init"> <tstamp /> <mkdir dir="${buildDir}" /> <mkdir dir="${distDir}" /> </target> <target name="compile" depends="init"> <javac srcdir="${srcDir}" destdir="${buildDir}" /> </target> <target name="dist" depends="compile"> <jar destfile="${distDir}/wufengtinghai.alm-${DSTAMP}.jar" basedir="${buildDir}"> <manifest> <attribute name="Built-By" value="${user.name}" /> <attribute name="project" value="wufengtinghai.alm" /> </manifest> </jar> </target> <target name="clean"> <delete dir="${buildDir}" /> <delete dir="${distDir}" /> </target> </project>
執行生成控制檯輸出以下
生成的jar文件和清單文件以下