ant基本使用說明.doc_第1頁
ant基本使用說明.doc_第2頁
ant基本使用說明.doc_第3頁
ant基本使用說明.doc_第4頁
ant基本使用說明.doc_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

ant使用說明Ant基本使用指南1 Ant是什么?Apache Ant 是一個基于 Java的生成工具。生成工具在軟件開發(fā)中用來將源代碼和其他輸入文件轉(zhuǎn)換為可執(zhí)行文件的形式(也有可能轉(zhuǎn)換為可安裝的產(chǎn)品映像形式)。隨著應用程序的生成過程變得更加復雜,確保在每次生成期間都使用精確相同的生成步驟,同時實現(xiàn)盡可能多的自動化,以便及時產(chǎn)生一致的生成版本2下載、安裝Ant安裝Ant下載.zip文件,解壓縮到c:ant1.3(后面引用為%ANT_HOME%)2.1在你運行Ant之前需要做一些配置工作。將bin目錄加入PATH環(huán)境變量。設(shè)定ANT_HOME環(huán)境變量,指向你安裝Ant的目錄。在一些OS上,Ant的腳本可以猜測ANT_HOME(Unix和Windos NT/2000)但最好不要依賴這一特性??蛇x地,設(shè)定JAVA_HOME環(huán)境變量(參考下面的高級小節(jié)),該變量應該指向你安裝JDK的目錄。注意:不要將Ant的ant.jar文件放到JDK/JRE的lib/ext目錄下。Ant是個應用程序,而lib/ext目錄是為JDK擴展使用的(如JCE,JSSE擴展)。而且通過擴展裝入的類會有安全方面的限制。2.2運行Ant運行Ant非常簡單,當你正確地安裝Ant后,只要輸入ant就可以了。沒有指定任何參數(shù)時,Ant會在當前目錄下查詢build.xml文件。如果找到了就用該文件作為buildfile。如果你用 -find 選項。Ant就會在上級目錄中尋找buildfile,直至到達文件系統(tǒng)的根。要想讓Ant使用其他的buildfile,可以用參數(shù) -buildfile file,這里file指定了你想使用的buildfile。可以指定執(zhí)行一個或多個target。當省略target時,Ant使用標簽的default屬性所指定的target。命令行選項總結(jié):ant options target target2 target3 .Options:-help print this message-projecthelp print project help information-version print the version information and exit-quiet be extra quiet-verbose be extra verbose-debug print debugging information-emacs produce logging information without adornments-logfile file use given file for log output-logger classname the class that is to perform. logging-listener classname add an instance of class as a project listener-buildfile file use specified buildfile-find file search for buildfile towards the root of the filesystem and use the first one found-Dproperty=value set property to valueAnt 命令行參考從命令行調(diào)用Ant 的語法如下所示:ant option option. target target.option := -help|-projecthelp|-version|-quiet|-verbose|-debug|-emacs|-logfile filename|-logger classname|-listener classname|-buildfile filename|-Dproperty=value|-find filename語法元素說明如下:-help顯示描述Ant 命令及其選項的幫助信息。-projecthelp顯示包含在構(gòu)建文件中的、所有用戶編寫的幫助文檔。即為各個中description 屬性的文本,以及包含在元素中的任何文本。將有description 屬性的目標列為主目標(“Main target”),沒有此屬性的目標則列為子目標(“Subtarget”)。-version要求Ant 顯示其版本信息,然后退出。-quiet抑制并非由構(gòu)建文件中的echo 任務所產(chǎn)生的大多數(shù)消息。-verbose顯示構(gòu)建過程中每個操作的詳細消息。此選項與-debug 選項只能選其一。-debug顯示Ant 和任務開發(fā)人員已經(jīng)標志為調(diào)試消息的消息。此選項與-verbose 只能選其一。-emacs對日志消息進行格式化,使它們能夠很容易地由Emacs 的shell 模式(shellmode)所解析;也就是說,打印任務事件,但并不縮排,在其之前也沒有taskname。-logfile filename將日志輸出重定向到指定文件。-logger classname指定一個類來處理Ant 的日志記錄。所指定的類必須實現(xiàn)了org.apache.tools.ant.BuildLogger 接口。-listener classname為Ant 聲明一個監(jiān)聽類,并增加到其監(jiān)聽者列表中。在Ant與IDE或其他Java程序集成時,此選項非常有用??梢蚤喿x第六章以了解有關(guān)監(jiān)聽者的更多信息。必須將所指定的監(jiān)聽類編寫為可以處理Ant 的構(gòu)建消息接發(fā)。-buildfile filename指定Ant 需要處理的構(gòu)建文件。默認的構(gòu)建文件為build.xml。-Dproperty=value在命令行上定義一個特性名值對。-find filename指定Ant 應當處理的構(gòu)建文件。與-buildfile 選項不同,如果所指定文件在當前目錄中未找到,-find 就要求Ant 在其父目錄中再進行搜索。這種搜索會繼續(xù)在其祖先目錄中進行,直至達到文件系統(tǒng)的根為止,在此如果文件還未找到,則構(gòu)建失敗。構(gòu)建文件輪廓下面是一個通用的構(gòu)建文件,它很適合作為一個模板。構(gòu)建文件包括元素,以及其中嵌套的、 和 元素。關(guān)于構(gòu)建文件有幾點需要記住: 所有構(gòu)建文件都要有元素,而且至少有一個 元素。 對于 元素的default 屬性并沒有默認值。 構(gòu)建文件并不一定要被命名為build.xml。不過build.xml 是Ant 要搜索的默認文件名。 每個構(gòu)建文件只能有一個 元素。例子ant使用當前目錄下的build.xml運行Ant,執(zhí)行缺省的target。ant -buildfile test.xml使用當前目錄下的test.xml運行Ant,執(zhí)行缺省的target。ant -buildfile test.xml dist使用當前目錄下的test.xml運行Ant,執(zhí)行一個叫做dist的target。ant -buildfile test.xml -Dbuild=build/classes dist使用當前目錄下的test.xml運行Ant,執(zhí)行一個叫做dist的target,并設(shè)定build屬性的值為build/classes。3編寫build.xmlAnt的buildfile是用XML寫的。每個buildfile含有一個project。buildfile中每個task元素可以有一個id屬性,可以用這個id值引用指定的任務。這個值必須是唯一的。(詳情請參考下面的Task小節(jié))3.1Projectsproject有下面的屬性:AttributeDescriptionRequiredname項目名稱.Nodefault當沒有指定target時使用的缺省targetYesbasedir用于計算所有其他路徑的基路徑。該屬性可以被basedir property覆蓋。當覆蓋時,該屬性被忽略。如果屬性和basedir property都沒有設(shè)定,就使用buildfile文件的父目錄。No項目的描述以一個頂級的元素的形式出現(xiàn)(參看description小節(jié))。一個項目可以定義一個或多個target。一個target是一系列你想要執(zhí)行的。執(zhí)行Ant時,你可以選擇執(zhí)行那個target。當沒有給定target時,使用project的default屬性所確定的target。3.2Targets一個target可以依賴于其他的target。例如,你可能會有一個target用于編譯程序,一個target用于生成可執(zhí)行文件。你在生成可執(zhí)行文件之前必須先編譯通過,所以生成可執(zhí)行文件的target依賴于編譯target。Ant會處理這種依賴關(guān)系。然而,應當注意到,Ant的depends屬性只指定了target應該被執(zhí)行的順序如果被依賴的target無法運行,這種depends對于指定了依賴關(guān)系的target就沒有影響。Ant會依照depends屬性中target出現(xiàn)的順序(從左到右)依次執(zhí)行每個target。然而,要記住的是只要某個target依賴于一個target,后者就會被先執(zhí)行。假定我們要執(zhí)行target D。從它的依賴屬性來看,你可能認為先執(zhí)行C,然后B,最后A被執(zhí)行。錯了,C依賴于B,B依賴于A,所以先執(zhí)行A,然后B,然后C,最后D被執(zhí)行。一個target只能被執(zhí)行一次,即時有多個target依賴于它(看上面的例子)。如果(或如果不)某些屬性被設(shè)定,才執(zhí)行某個target。這樣,允許根據(jù)系統(tǒng)的狀態(tài)(java version, OS, 命令行屬性定義等等)來更好地控制build的過程。要想讓一個target這樣做,你就應該在target元素中,加入if(或unless)屬性,帶上target因該有所判斷的屬性。例如:如果沒有if或unless屬性,target總會被執(zhí)行??蛇x的description屬性可用來提供關(guān)于target的一行描述,這些描述可由-projecthelp命令行選項輸出。將你的tstamp task在一個所謂的初始化target是很好的做法,其他的target依賴這個初始化target。要確保初始化target是出現(xiàn)在其他target依賴表中的第一個target。在本手冊中大多數(shù)的初始化target的名字是init。target有下面的屬性:AttributeDescriptionRequirednametarget的名字Yesdepends用逗號分隔的target的名字列表,也就是依賴表。Noif執(zhí)行target所需要設(shè)定的屬性名。Nounless執(zhí)行target需要清除設(shè)定的屬性名。Nodescription關(guān)于target功能的簡短描述。No3.3Tasks一個task是一段可執(zhí)行的代碼。一個task可以有多個屬性(如果你愿意的話,可以將其稱之為變量)。屬性只可能包含對property的引用。這些引用會在task執(zhí)行前被解析。下面是Task的一般構(gòu)造形式:這里name是task的名字,attributeN是屬性名,valueN是屬性值。有一套內(nèi)置的(built-in)task,以及一些可選task,但你也可以編寫自己的task。所有的task都有一個task名字屬性。Ant用屬性值來產(chǎn)生日志信息??梢越otask賦一個id屬性:這里taskname是task的名字,而taskID是這個task的唯一標識符。通過這個標識符,你可以在腳本中引用相應的task。例如,在腳本中你可以這樣:task1.setFoo(bar);設(shè)定某個task實例的foo屬性。在另一個task中(用java編寫),你可以利用下面的語句存取相應的實例。project.getReference(task1).注意1:如果task1還沒有運行,就不會被生效(例如:不設(shè)定屬性),如果你在隨后配置它,你所作的一切都會被覆蓋。注意2:未來的Ant版本可能不會兼容這里所提的屬性,因為很有可能根本沒有task實例,只有proxies。3.4Properties一個project可以有很多的properties??梢栽赽uildfile中用property task來設(shè)定,或在Ant之外設(shè)定。一個property有一個名字和一個值。property可用于task的屬性值。這是通過將屬性名放在和 之間并放在屬性值的位置來實現(xiàn)的。例如如果有一個property builddir的值是build,這個property就可用于屬性值:builddir/classes。這個值就可被解析為 build/classes。內(nèi)置屬性如果你使用了 task 定義了所有的系統(tǒng)屬性,Ant允許你使用這些屬性。例如,對應操作系統(tǒng)的名字。要想得到系統(tǒng)屬性的列表可參考the Javadoc of System.getProperties。除了Java的系統(tǒng)屬性,Ant還定義了一些自己的內(nèi)置屬性:basedir project基目錄的絕對路徑 (與的basedir屬性一樣)。ant.file buildfile的絕對路徑。ant.version Ant的版本。 當前執(zhí)行的project的名字;由的name屬性設(shè)定.ant.java.version Ant檢測到的JVM的版本;目前的值有1.1, 1.2, 1.3 and 1.4.例子3.5Path-like Structures你可以用:和;作為分隔符,指定類似PATH和CLASSPATH的引用。Ant會把分隔符轉(zhuǎn)換為當前系統(tǒng)所用的分隔符。當需要指定類似路徑的值時,可以使用嵌套元素。一般的形式是location屬性指定了相對于project基目錄的一個文件和目錄,而path屬性接受逗號或分號分隔的一個位置列表。path屬性一般用作預定義的路徑其他情況下,應該用多個location屬性。為簡潔起見,classpath標簽支持自己的path和location屬性。所以:可以被簡寫作:也可通過元素指定路徑。構(gòu)成一個fileset的多個文件加入path-like structure的順序是未定的。上面的例子構(gòu)造了一個路徑值包括:classpath的路徑,跟著lib目錄下的所有jar文件,接著是classes目錄。如果你想在多個task中使用相同的path-like structure,你可以用元素定義他們(與target同級),然后通過id屬性引用參考Referencs例子。path-like structure可能包括對另一個path-like structurede的引用(通過嵌套元素):前面所提的關(guān)于的簡潔寫法對于也是有效的,如:可寫成:命令行變量有些task可接受參數(shù),并將其傳遞給另一個進程。為了能在變量中包含空格字符,可使用嵌套的arg元素。AttributeDescriptionRequiredvalue一個命令行變量;可包含空格字符。只能用一個line空格分隔的命令行變量列表。file作為命令行變量的文件名;會被文件的絕對名替代。path一個作為單個命令行變量的path-like的字符串;或作為分隔符,Ant會將其轉(zhuǎn)變?yōu)樘囟ㄆ脚_的分隔符。例子是一個含有空格的單個的命令行變量。是兩個空格分隔的命令行變量。是一個命令行變量,其值在DOS系統(tǒng)上為dir;dir2;dir3;在Unix系統(tǒng)上為/dir:/dir2:/dir3 。Referencesbuildfile元素的id屬性可用來引用這些元素。如果你需要一遍遍的復制相同的XML代碼塊,這一屬性就很有用如多次使用結(jié)構(gòu)。下面的例子:可以寫成如下形式:所有使用PatternSets, FileSets 或 path-like structures嵌套元素的task也接受這種類型的引用。4Ant的Core Tasks4.1File(Directory)類4.1.1Mkdir創(chuàng)建一個目錄,如果他的父目錄不存在,也會被同時創(chuàng)建。例子:說明:如果build不存在,也會被同時創(chuàng)建4.1.2Copy拷貝一個(組)文件、目錄例子:1.拷貝單個的文件:2.拷貝單個的文件到指定目錄下3.拷貝一個目錄到另外一個目錄下4.拷貝一批文件到指定目錄下5.拷貝一批文件到指定目錄下,將文件名后增加。Bak后綴6.拷貝一組文件到指定目錄下,替換其中的標簽內(nèi)容4.1.3Delete刪除一個(組)文件或者目錄例子1.刪除一個文件2.刪除指定目錄及其子目錄3.刪除指定的一組文件4.刪除指定目錄及其子目錄,包括他自己4.1.4Move移動或重命名一個(組)文件、目錄例子:1.移動或重命名一個文件2.移動或重命名一個文件到另一個文件夾下面3.將一個目錄移到另外一個目錄下4.將一組文件移動到另外的目錄下5.移動文件過程中增加。Bak后綴4.2Java相關(guān)4.2.1Javac編譯java原代碼例子1.編譯src目錄及其子目錄下的所有。Java文件,。Class文件將放在build指定的目錄下,classpath表示需要用到的類文件或者目錄,debug設(shè)置為on表示輸出debug信息2.編譯src和src2目錄及其子目錄下的所有。Java文件,但是package/p1/*,mypackage/p2/*將被編譯,而mypackage/p1/testpackage/*將不會被編譯。Class文件將放在build指定的目錄下,classpath表示需要用到的類文件或者目錄,debug設(shè)置為on表示輸出debug信息3.路徑是在property中定義的4.2.2java執(zhí)行指定的java類例子:1.classname中指定要執(zhí)行的類,classpath設(shè)定要使用的環(huán)境變量2.4.3打包相關(guān)4.3.1jar將一組文件打包例子:1.將build/classes下面的所有文件打包到dist/lib/app.jar中2.將build/classes下面的所有文件打包到dist/lib/app.jar中,但是包括mypackage/test所有文件不包括所有的Test.class3.manifest屬性指定自己的META-INF/MANIFEST.MF文件,而不是由系統(tǒng)生成4.3.2war對Jar的擴展,用于打包Web應用例子:假設(shè)我們的文件目錄如下:thirdparty/libs/jdbc1.jarthirdparty/libs/jdbc2.jarbuild/main/com/myco/myapp/Servlet.classsrc/metadata/myapp.xmlsrc/html/myapp/index.htmlsrc/jsp/myapp/front.jspsrc/graphics/images/gifs/small/logo.gifsrc/graphics/images/gifs/large/logo.gif下面是我們的任務的內(nèi)容:完成后的結(jié)果:WEB-INF/web.xmlWEB-INF/lib/jdbc2.jarWEB-INF/classes/com/myco/myapp/Servlet.classMETA-INF/MANIFEST.MFindex.htmlfront.jspimages/small/logo.gifimages/large/logo.gif4.3.3ear用于打包企業(yè)應用例子4.4時間戳在生成環(huán)境中使用當前時間和日期,以某種方式標記某個生成任務的輸出,以便記

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論