來自:http://blog.csdn.net/hbcui1984/article/details/1954537java
今天在公司用ant寫了個部署web應用的腳本,閒來無事,就稍微總結一下,以供之後參照使用,也但願做爲一個demo, 能對你們有啓迪的做用,若是真的如此,我也就非常欣慰了。web
好了,言歸正傳,下面就開始記流水帳吧。tomcat
一.Ant簡介app
Ant是一種基於java的build工具,有些相似於unix系統中的make命令,Ant是Apache軟件基金會Jakarta目錄中的一個子項目,具備跨平臺性,操做簡單。。等特色。less
這裏就不說這些老套的話了,你們知道就是一種build工具就能夠了,具體有什麼用和怎麼用,咱們稍後說明。eclipse
二.Ant的主要標籤及數據類型webapp
Ant構建文件是一個xml文件,通常默認命名爲build.xml,若是是web project,一般把構建文件放在頂層目錄下,即和src文件夾並列。工具
一個Ant構建文件須要定義一個惟一的項目元素(project元素),還能夠定義多個目標元素(target元素),各個目標元素之間能夠有必定的依賴關係,如:優化
< target name ="compile" >
< target name ="deploy" depends ="compile" >如上,deploy依賴與compile,即:系統必須先compile完了,而後才能deploy。ui
下面簡要介紹一下Ant的主要標籤:
1.<project>標籤
每一個構建文件對應一個項目。<project>標籤是構建文件的根標籤。它能夠有多個內在屬性,其各個屬性的含義分別以下:
(1) default表示默認的運行目標,這個屬性是必須的。
(2) basedir表示項目的基準目錄。
(3) name表示項目名。
(4) description表示項目的描述。2.<target>標籤
Target的經常使用屬性以下。
(1).name表示目標名稱,這個屬性是必須的。
(2).depends表示依賴的目標。
(3)if表示僅當屬性設置時才執行。
(4)unless表示當屬性沒有設置時才執行。
(5)description表示項目的描述。
Ant的depends屬性指定了target的執行順序。Ant會依照depends屬性中target出現順序依次執行每一個target。在執行以前,首先須要執行它所依賴的target。3.<mkdir>標籤
該標籤用於建立一個目錄,它有一個屬性dir用來指定所建立的目錄名。4<jar>標籤
該標籤用來生成一個JAR文件,其屬性以下。
(1) destfile表示要生成的JAR文件名。
(2) basedir表示被歸檔的文件名。
(3) includes表示須要歸檔的文件模式。
(4) exchudes表示被排除的文件模式。5.<javac標籤>
該標籤用於編譯一個或一組java文件,其屬性以下。
(1).srcdir表示源程序的目錄。
(2).destdir表示class文件的輸出目錄。
(3).include表示被編譯的文件的模式。
(4).excludes表示被排除的文件的模式。
(5).classpath表示所使用的類路徑。
(6).debug表示包含的調試信息。
(7).optimize表示是否使用優化。
(8).verbose 表示提供詳細的輸出信息。
(9).fileonerror表示當碰到錯誤就自動中止。6.<java>標籤
該標籤用來執行編譯生成的.class文件,其屬性以下。
(1).classname 表示將執行的類名。
(2).jar表示包含該類的JAR文件名。
(3).classpath所表示用到的類路徑。
(4).fork表示在一個新的虛擬機中運行該類。
(5).failonerror表示當出現錯誤時自動中止。
(6).output 表示輸出文件。
(7).append表示追加或者覆蓋默認文件。7.<delete>標籤
該標籤用於刪除一個文件或一組文件,其屬性以下。
(1)/file表示要刪除的文件。
(2).dir表示要刪除的目錄。
(3).includeEmptyDirs 表示指定是否要刪除空目錄,默認值是刪除。
(4).failonerror 表示指定當碰到錯誤是否中止,默認值是自動中止。8.<copy>標籤
該標籤用於文件或文件集的拷貝,其屬性以下。
(1).file 表示源文件。
(2).tofile 表示目標文件。
(3).todir 表示目標目錄。
(4).overwrite 表示指定是否覆蓋目標文件,默認值是不覆蓋。
(5).includeEmptyDirs 表示制定是否拷貝空目錄,默認值爲拷貝。
(6).failonerror 表示指定如目標沒有發現是否自動中止,默認值是中止。
若是咱們部署一個 web應用的話,常常用到的標籤有:delete,mkdir,copy,jar,target,project。
三.使用Ant發佈web應用到tomcat
下面咱們以一個簡單的例子,來演示如何使用Ant發佈web應用到tomcat。咱們假設有個很簡單的web projcet,咱們想使用Ant來將服務部署到tomcat,假設在web project的根目錄下有個build.xml文件,咱們能夠如此編輯該構建文件。
< project name ="demo" basedir ="." >
<!-- 定義tomcat所在目錄 -->
< property name ="webapp" value ="D:/tomcat/webapps/ROOT" />
< target name ="core" >
<!-- 刪除原來部署的文件 -->
< delete dir ="${webapp}" ></ delete >
< mkdir dir ="${webapp}" />
<!-- 將編譯後的文件拷貝到tomcat目錄下 -->
< copy todir ="${webapp}" overwrite ="true" >
< fileset dir ="${basedir}/WebRoot" />
</ copy >
</ target >
</ project >完事了?yes!很是簡單!固然,如上代碼的前提是:在eclipse+Myeclipse環境下開發,而且將自動編譯開關開開,這樣咱們只須要將編譯好的文件拷貝到tomcat目錄下便可,若是不是在這種環境下開發,咱們可能就須要先使用javac命令編譯一下,而後再拷貝到tomcat目錄下。
若是咱們想把該web project中的java文件打成jar包,放置在WEB-INF/lib目錄下,將其餘文件拷貝到tomcat/webapps目錄下,咱們可使用以下構建文件:
< project name ="demo" basedir ="." >
< property name ="webapp" value ="D:/tomcat/webapps/ROOT" />
< target name ="core" >
<!-- 刪除原來部署的文件 -->
< delete dir ="${webapp}" ></ delete >
< mkdir dir ="${webapp}" />
<!-- 除了class文件外,其餘文件拷貝到tomcat目錄下 -->
< copy todir ="${webapp}" overwrite ="true" >
< fileset dir ="${basedir}/WebRoot" excludes ="**/*.class" />
</ copy >
<!-- 將class文件打包,放到/WEB-INF/lib目錄下 -->
< jar destfile ="${webapp}/WEB-INF/lib/test.jar" >
< fileset dir ="${basedir}/WebRoot/WEB-INF/classes" >
< include name ="**/*.class" />
</ fileset >
</ jar >
</ target >
</ project >怎麼樣?咱們上面用到了copy,delete,mkdir,fileset,include,excludes這些標籤,你可明白?