Ant的全名是"Another Neat Tool",是壹個用於簡單或復雜Java工程的自動化構建、部署工具,它對於那些具有分布式開發團隊或者相信通過頻繁的構建來進行不間斷集成的公司尤其有用。對於那些建立傳統全Java應用程序以及那些使用HTML、JSP和Java servlets創建Web應用程序的公司來說,Ant極具價值。無論妳的Java開發者使用什麽操作系統、集成開發環境或者構建環境,Ant都可以將妳的工程集合在壹起,用於那些重要的構建。Ant也能夠自動化並且同步文檔部署,這通常發生在軟件開發過程中的沒有正式文檔和文檔比較混亂的部分。
2. Ant的主要標簽及數據類型
Ant構建文件是壹個xml文件,壹般默認命名為build.xml,如果是web project,通常把構建文件放在頂層目錄下,即和src文件夾並列。
壹個Ant構建文件需要定義壹個唯壹的項目元素(project元素),還可以定義多個目標元素(target元素),各個目標元素之間可以有壹定的依賴關系,如:
<target name="compile">
<target name="deploy" depends="compile">
如上,deploy依賴與compile,即:系統必須先compile完了,然後才能deploy。
下面簡要介紹壹下Ant的主要標簽:
<project>標簽
每個構建文件對應壹個項目。<project>標簽是構建文件的根標簽。它可以有多個內在屬性,其各個屬性的含義分別如下:
(1) default表示默認的運行目標,這個屬性是必須的。
(2) basedir表示項目的基準目錄。
(3) name表示項目名。
(4) description表示項目的描述。
<target>標簽
target的常用屬性如下。
(1)name表示目標名稱,這個屬性是必須的。
(2)depends表示依賴的目標。
(3)if表示僅當屬性設置時才執行。
(4)unless表示當屬性沒有設置時才執行。
(5)description表示項目的描述。
Ant的depends屬性指定了target的執行順序。Ant會依照depends屬性中target出現順序依次執行每個target。在執行之前,首先需要執行它所依賴的target。
<mkdir>標簽
該標簽用於創建壹個目錄,它有壹個屬性dir用來指定所創建的目錄名。
<jar>標簽
該標簽用來生成壹個JAR文件,其屬性如下。
(1) destfile表示要生成的JAR文件名。
(2) basedir表示被歸檔的文件名。
(3) includes表示需要歸檔的文件模式。
(4) exchudes表示被排除的文件模式。
<javac>標簽
該標簽用於編譯壹個或壹組java文件,其屬性如下。
(1)srcdir表示源程序的目錄。
(2)destdir表示class文件的輸出目錄。
(3)include表示被編譯的文件的模式。
(4)excludes表示被排除的文件的模式。
(5)classpath表示所使用的類路徑。
(6)debug表示包含的調試信息。
(7)optimize表示是否使用優化。
(8)verbose 表示提供詳細的輸出信息。
(9)fileonerror表示當碰到錯誤就自動停止。
<java>標簽
該標簽用來執行編譯生成的.class文件,其屬性如下。
(1)classname 表示將執行的類名。
(2)jar表示包含該類的JAR文件名。
(3)classpath所表示用到的類路徑。
(4)fork表示在壹個新的虛擬機中運行該類。
(5)failonerror表示當出現錯誤時自動停止。
(6)output 表示輸出文件。
(7)append表示追加或者覆蓋默認文件。
<delete>標簽
該標簽用於刪除壹個文件或壹組文件,其屬性如下。
(1)file表示要刪除的文件。
(2)dir表示要刪除的目錄。
(3)includeEmptyDirs 表示指定是否要刪除空目錄,默認值是刪除。
(4)failonerror 表示指定當碰到錯誤是否停止,默認值是自動停止。
<copy>標簽
該標簽用於文件或文件集的拷貝,其屬性如下。
(1)file 表示源文件。
(2)tofile 表示目標文件。
(3)todir 表示目標目錄。
(4)overwrite 表示指定是否覆蓋目標文件,默認值是不覆蓋。
(5)includeEmptyDirs 表示制定是否拷貝空目錄,默認值為拷貝。
(6)failonerror 表示指定如目標沒有發現是否自動停止,默認值是停止。
如果我們部署壹個 web應用的話,經常用到的標簽有:delete,mkdir,copy,jar,target,project。
3. 使用Ant部署Web項目到tomcat
在項目下新建壹個文件build.xml,內容如下:
<project name="javaee1" basedir=".">
<property name="webapp" value="C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\javaee1" />
<target name="deploy">
<mkdir dir="${webapp}"/>
<copy todir="${webapp}" overwrite="true">
<fileset dir="${basedir}/WebContent" />
</copy>
<mkdir dir="${webapp}/WEB-INF/classes"/>
<copy todir="${webapp}/WEB-INF/classes" overwrite="true">
<fileset dir="${basedir}/build/classes" />
</copy>
</target>
</project>