版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
ANT自動化腳本編譯研發(fā)中心/軟件產(chǎn)品線曹鋒2013年1月5日Ant是什么ApacheAnt是一個基于Java的生成工具。據(jù)最初的創(chuàng)始人JamesDuncanDavidson介紹,這個工具的名稱是anotherneattool(另一個整潔的工具)的首字母縮寫。Ant的作用生成工具在軟件開發(fā)中用來將源代碼和其他輸入文件轉(zhuǎn)換為可執(zhí)行文件的形式(也有可能轉(zhuǎn)換為可安裝的產(chǎn)品映像形式)。隨著應(yīng)用程序的生成過程變得更加復(fù)雜,確保在每次生成期間都使用精確相同的生成步驟,同時實(shí)現(xiàn)盡可能多的自動化,以便及時產(chǎn)生一致的生成版本,這就變得更加重要Ant的優(yōu)勢Ant定義生成文件之間的依賴關(guān)系,它使用跨平臺的Java類。使用Ant,您能夠編寫單個生成文件,這個生成文件在任何Java平臺上都一致地操作(因?yàn)锳nt本身也是使用Java語言來實(shí)現(xiàn)的),這就是Ant最大的優(yōu)勢Ant生成文件剖析Ant沒有定義它自己的自定義語法;相反,它的生成文件是用XML編寫的。存在一組Ant能夠理解的預(yù)定義XML元素,而且還可以定義新的元素來擴(kuò)展Ant的功能。每個生成文件由單個project元素組成,該元素又包含一個或多個target元素。一個目標(biāo)(target)是生成過程中已定義的一個步驟,它執(zhí)行任意數(shù)量的操作,比如編譯一組源文件。并且這些操作本身是由其他專用任務(wù)標(biāo)簽執(zhí)行的Ant生成文件剖析然后這些任務(wù)將根據(jù)需要被分組到各個target元素中。一次生成過程所必需的所有操作可以放入單個target元素中,但是那樣會降低靈活性。將那些操作劃分為邏輯生成步驟,每個步驟包含在它自己的target元素中,這樣通常更為可取。這樣可以執(zhí)行整體生成過程的單獨(dú)部分,卻不一定要執(zhí)行其他部分。例如,通過僅調(diào)用某些目標(biāo),您可以編譯項(xiàng)目的源代碼,卻不必創(chuàng)建可安裝的項(xiàng)目文件Ant生成文件剖析頂級project元素需要包含一個default屬性,如果在Ant被調(diào)用時沒有指定目標(biāo),這個屬性將指定要執(zhí)行的目標(biāo)。然后需要使用target元素來定義該目標(biāo)本身。下面是一個最基本的生成文件Ant生成文件剖析<?xmlversion="1.0"?><projectdefault="init"><targetname="init"></target></project>更進(jìn)一步<?xmlversion="1.0"?><projectdefault="init"name="Project"><description>AsimpleprojectintroducingtheuseofdescriptivetagsinAntbuildfiles.</description><!--XMLcommentscanalsobeused--><targetname="init"description="InitializeArgondatabase"><!--performinitializationstepshere--></target></project>更進(jìn)一步可以看出,XML注釋可以使用在整個生成文件中以提高清晰性。而且,Ant定義了它自己的description元素和description屬性,它們可用于提供更結(jié)構(gòu)化的注釋。屬性Ant中的屬屬性類類似編編程語語言中中的變變量,,它們們都具具有名名稱和和值。。然而而與通通常的的變量量不同同,一經(jīng)設(shè)設(shè)置,,Ant中的屬屬性就就不可可更改改;它它們是是不可可變的的,就像Java語言中中的String對象。這這起初初看來來似乎乎很有有限制制性,,但這這樣是是為了了遵循循Ant的簡單單原則則:畢畢竟竟,它它是一一個生生成工工具,,而不不是一一種編編程語語言。。如果果嘗試試給某某個現(xiàn)現(xiàn)有屬屬性賦賦予一一個新新的值值,這這不會會被看看作是是一個個錯誤誤,但但是該該屬性性仍然然會保保留其其現(xiàn)有有值定義與與使用用屬性性<propertyname="metal“value="beryllium"/>為了在在生成成文件件的其其他部部分引引用這這個屬屬性,,使用用以下下語法法:${metal}例如,為了了使用這樣樣一個值,,它是另一一個屬性的的值的組成成部分,將將標(biāo)簽寫成成下面這樣樣<propertyname="metal-database"value="${metal}.db"/>location屬屬性屬性經(jīng)常用用于引用文文件系統(tǒng)上上的文件或或目錄,但但是對于使使用不同路路徑分隔符符(例如,,/與\)的平平臺來說,,這樣可能能在跨越不不同平臺時時導(dǎo)致問題題。Ant的location屬屬性專門門設(shè)計用于于以平臺無無關(guān)的方式式包含文件件系統(tǒng)路徑徑。像下面面這樣使用用location來代代替value:location屬屬性<propertyname="database-file"location="archive/databases/${metal}.db"/>location屬屬性用于location屬性的路徑徑分隔字符符將被轉(zhuǎn)換換為當(dāng)前平平臺的正確確格式;而而且由于文文件名是相相對的,它它被認(rèn)為是是相對于項(xiàng)項(xiàng)目的基目目錄。我們們同樣可以以容易地寫寫為下面這這樣:<propertyname="database-file"location="archive\databases\${metal}.db"/>這個標(biāo)簽的的兩個版本本都會在不不同的平臺臺具有相同同的行為定義依賴關(guān)關(guān)系生成一個項(xiàng)項(xiàng)目一般需需要許多步步驟——例如首先要要編譯源代代碼,然后后將它打包包為Java歸檔文件(JavaArchiveFile,JAR)。這其中中許多步驟驟都具有清清楚定義的的順序——例如,在編編譯器從源源代碼生成成類文件之之前,您不不能打包類類文件。與與順序指定定target所不同的是是,Ant采用一種更更靈活的方方法來定義義依賴關(guān)關(guān)系。每每個目標(biāo)的的定義依據(jù)據(jù)的是在它它能夠執(zhí)行行之前必須須完成的其其他所有目目標(biāo)。這是是使用target元素的depends屬性來實(shí)現(xiàn)現(xiàn)的定義依賴關(guān)關(guān)系<targetname="init"/><targetname="preprocess"depends="init"/><targetname="compile"depends="init,preprocess"/><targetname="package"depends="compile"/>定義依賴關(guān)關(guān)系這種方法允允許您執(zhí)行行項(xiàng)目任何何階段的生生成過程;;Ant會首先執(zhí)行行已定義的的先決階段段。在上面面的例子中中,如果讓讓Ant完成compile步驟,它將將判斷出需需要首先執(zhí)執(zhí)行init和preprocess這兩個目標(biāo)標(biāo)。init目標(biāo)不依賴賴其他任何何目標(biāo),因因此它將首首先被執(zhí)行行。然后Ant檢查preprocesstarget,發(fā)現(xiàn)它依依賴init目標(biāo);由于于已經(jīng)執(zhí)行行了后者,,Ant不會再次執(zhí)執(zhí)行它,因因而開始執(zhí)執(zhí)行preprocess目標(biāo)。最后后可以執(zhí)行行compile任務(wù)本身。。注意目標(biāo)出出現(xiàn)在生成成文件中的的順序并不不重要:執(zhí)行順序是是由depends屬性唯一確確定的。從命令行運(yùn)運(yùn)行Ant從命令提示示符調(diào)用Ant可以簡單得得只需鍵入入單獨(dú)的ant。如果您這這樣做,Ant將使用默認(rèn)的生成成文件;該生成文文件中指定定的默認(rèn)目目標(biāo)就是Ant嘗試要生成成的目標(biāo)。。還可以指指定許多命命令行選項(xiàng)項(xiàng),后面跟跟著任意數(shù)數(shù)量的生成成目標(biāo),Ant將按順序生生成這其中中的每個目目標(biāo),并在在此過程中中解決所有有依賴關(guān)系系命令行選項(xiàng)項(xiàng)默認(rèn)情況下下,Ant尋找一一個名為build.xml的文件件。因此,,如果您的的生成文件件使用這個個名稱,就就不需要在在命令行指指定它。當(dāng)當(dāng)然,有時時使用具有有其他名稱稱的生成文文件更方便便,在那樣樣的情況下下,您需要要對Ant使用用-buildfile<file>參參數(shù)(-f<file>是是其簡寫寫形式)命令行選項(xiàng)項(xiàng)另一個有用用的選項(xiàng)是是-D,它用于設(shè)設(shè)置隨后可可以在生成成文件中使使用的屬性性。這對于于配置您想想要以某種種方式開始始的生成過過程是非常常有用的。。例如,為為了將name屬性設(shè)置為為某個特定定的值,您您會使用一一個類似下下面這樣的的選項(xiàng):-Dmetal=beryllium命令行選項(xiàng)項(xiàng)這個功能可可用于覆蓋蓋生成文件件中的初始始屬性設(shè)置置。正如前前面指出過過的,屬性性的值一經(jīng)經(jīng)設(shè)置就不不能改變。。-D標(biāo)標(biāo)志在讀取取生成文件件中的任何何信息之前前設(shè)置某個個屬性;由由于生成文文件中的指指派落在這這個初始指指派之后,,因此它不不會改變其其值IDE集成編譯源代碼碼<javacsrcdir="src"/>這個標(biāo)簽尋尋找src目錄中以.java為擴(kuò)展名的的所有文件件,并對它它們調(diào)用javac編譯器,從從而在相同同的目錄中中生成類文文件。當(dāng)然然,將類文文件放在一一個單獨(dú)的的目錄結(jié)構(gòu)構(gòu)中通常會會更清晰;;可以通過過添加destdir屬性來讓Ant做到這點(diǎn)IDE集成其他有用的的屬性包括括classpath:等價于javac的-classpath選項(xiàng)。debug="true":指示編譯譯器應(yīng)該帶帶調(diào)試信息息編譯源文文件。IDE集成javac任務(wù)的一個個重要特點(diǎn)點(diǎn)在于,它它僅編譯那那些它認(rèn)為為需要編譯譯的源文件件。如果某某個類文件件已經(jīng)存在在,并且對對應(yīng)的源文文件自從該該類文件生生成以來還還沒有改變變過,那么么該源文件件就不會被被重新編譯譯。javac任務(wù)的輸出出顯示了實(shí)實(shí)際被編譯譯的源文件件的數(shù)目。。這種行為刻刻畫了Ant的許多任務(wù)務(wù)的特點(diǎn)::如果某個個任務(wù)能夠夠確定所請請求的操作作不需要執(zhí)執(zhí)行,那么么該操作就就會被跳過過。IDE集成創(chuàng)建JAR文件在編譯Java源文件之后后,結(jié)果類類文件通常常被打包到到一個JAR文件中,這這個文件類類似zip歸檔文件。。每個JAR文件都包含含一個清單單文件,它它可以指定定該JAR文件的屬性性下面是Ant中jar任務(wù)的一個個簡單使用用例子:<jardestfile="package.jar"basedir="classes"/>IDE集成這將創(chuàng)建建一個名名為package.jar的的JAR文文件,并并把classes目錄錄中的所所有文件件添加到到其中((JAR文件能能夠包含含任意類類型的文文件,而而不只是是類文件件)。此此處沒有有指定清清單文件件,因此此Ant將將提供一一個基本本的清單單文件IDE集成manifest屬屬性允許許指定一一個用作作該JAR文文件的的清單的的文件。。清單文文件的內(nèi)內(nèi)容還可可以使用用manifest任務(wù)在在生成文文件中指指定。這這個任務(wù)務(wù)能夠向向文件系系統(tǒng)寫入入一個清清單文件件,或者者能夠?qū)崒?shí)際嵌套套在jar之之內(nèi),,以便一一次性地地創(chuàng)建清清單文件件和JAR文文件。。IDE集成<jardestfile="package.jar"basedir="classes"><manifest><attributename="Built-By"value="${}"/><attributename="Main-class"value="package.Main"/></manifest></jar>IDE集成時間戳生生成在生成環(huán)環(huán)境中使使用當(dāng)前前時間和和日期,,以某種種方式標(biāo)標(biāo)記某個個生成任任務(wù)的輸輸出,以以便記錄錄它是何何時生成成的,這這經(jīng)常是是可取的的。這可可能涉及及編輯一一個文件件,以便便插入一一個字符符串來指指定日期期和時間間,或?qū)⑦@個信信息合并并到JAR或zip文件的文文件名中中。這種需要要是通過過簡單但但是非常常有用的的tstamp任務(wù)來解解決的。。這個任任務(wù)通常常在某次次生成過過程開始始時調(diào)用用,比如如在一個個init目標(biāo)中。。這個任任務(wù)不需需要屬性性,許多多情況下下只需<tstamp/>就足夠了了IDE集成tstamp不不產(chǎn)生生任何輸輸出;相相反,它它根據(jù)當(dāng)當(dāng)前系統(tǒng)統(tǒng)時間和和日期設(shè)設(shè)置Ant屬屬性。。下面是是tstamp設(shè)設(shè)置的一一些屬性性、對每每個屬性性的說明明,以及及這些屬屬性可被被設(shè)置到到的值的的例子IDE集成IDE集成在調(diào)用tstamp任務(wù)務(wù)之后,,我們能能夠根據(jù)據(jù)日期命命名該JAR文件件,如下下所示::<jardestfile="package-${DSTAMP}.jar"basedir="classes"/>IDE集成綜合lab文件系統(tǒng)統(tǒng)操作創(chuàng)建和刪刪除目錄錄最基本的的文件系系統(tǒng)操作作之一就就是創(chuàng)建建目錄或或文件夾夾。做這這項(xiàng)工作作的任務(wù)務(wù)名為mkdir<mkdirdir="archive/metals/zinc"/>mkdir任務(wù)的另另一個有有用特性性是它的的如下能能力:在在父目錄錄還不存存在時創(chuàng)創(chuàng)建它們們?nèi)绻繕?biāo)標(biāo)目錄已已經(jīng)存在在,mkdir任務(wù)不會會發(fā)出錯錯誤消息息,而只只是假設(shè)設(shè)它的工工作已經(jīng)經(jīng)完成,,從而什什么也不不做文件系統(tǒng)統(tǒng)操作刪除目錄錄<deletedir="archive/metals/zinc"/>這將刪除除指定的的目錄連連同它包包含的所所有文件件以及子子目錄。。使用file屬性而不不是dir屬性可以以指定要要刪除的的單個文文件文件系統(tǒng)統(tǒng)操作復(fù)制和移移動文件件及目錄錄<copyfile="src/Test.java"tofile="src/TestCopy.java"/>還可以使使用move來執(zhí)行重重命名操操作而不不是拷貝貝文件<movefile="src/Test.java"tofile="src/TestCopy.java"/>另一個常常用的文文件系統(tǒng)統(tǒng)操作是是將文件件復(fù)制或或移動到到另一個個目錄<copyfile="src/Test.java"todir="archive"/><movefile="src/Test.java"todir="archive"/>文件系統(tǒng)統(tǒng)操作默認(rèn)情況況下,Ant僅輸出它它執(zhí)行的的移動和和復(fù)制操操作的摘摘要,包包括諸如如已移動動或復(fù)制制的文件件的數(shù)量量等信息息。如果果想看到到更詳細(xì)細(xì)的信息息,包括括涉及的的文件名名稱等,,可以將將verbose屬性設(shè)置置為true創(chuàng)建和解解壓縮zip文件<zipdestfile="output.zip"basedir="output"/>解壓縮和和提取文文件<unzipsrc="output.tar.gz"dest="extractDir"/>還可以包包括overwrite屬性來控控制覆蓋蓋行為。。默認(rèn)設(shè)設(shè)置是覆覆蓋與正正在被提提取的歸歸檔文件件中的條條目相匹匹配的所所有現(xiàn)有有文件替換文件件中的標(biāo)標(biāo)記replace任務(wù),它它執(zhí)行文文件中的的查找和和替換操操作。token屬性指定定要查找找的字符符串,value屬性指定定一個新新的字符符串,查查找到的的標(biāo)記字字符串的的所有實(shí)實(shí)例都被被替換為為這個新新的字符符串。例例如:<replacefile="input.txt"token="old"value="new"/>替換文件件中的標(biāo)標(biāo)記替換操作作將在文文件本身身之內(nèi)的的適當(dāng)位位置進(jìn)行行。為了了提供更更詳細(xì)的的輸出,,可把summary屬屬性設(shè)置置為true。。這將導(dǎo)導(dǎo)致該任任務(wù)輸出出找到和和替換的的標(biāo)記字字符串實(shí)實(shí)例的數(shù)數(shù)目模式匹配配可以對目目錄執(zhí)行行模式匹匹配。例例如,模模式src*/*.java將將匹配帶帶src前前綴的任任何目錄錄中的所所有Java文文件。。還有另一一種模式式結(jié)構(gòu)::**,,它匹配配任意數(shù)數(shù)量的目目錄。例例如,模模式**/*.java將將匹配配當(dāng)前目目錄結(jié)構(gòu)構(gòu)下的所所有Java文件件。模式匹配配<copytodir="archive"><filesetdir="src"><includename=“*.java"/></fileset></copy>模式匹配配fileset默認(rèn)情況況下包含含指定src目錄下的的所有文文件,因因此為了了僅選擇擇Java文件,我我們對模模式使用用一個include元素。類類似地,,我們可可以對另另一個模模式添加加一個exclude元素,從從而潛在在地排除除include指定的匹匹配項(xiàng)。。甚至可可以指定定多個include和exclude元素;這這樣將得得到一組組文件和和目錄,,它們包包含include模式的所所有匹配配項(xiàng)的并并集,但但排除了了exclude模式的所所有匹配配項(xiàng)默認(rèn)排除除自動從文文件集內(nèi)內(nèi)容中排排除的內(nèi)內(nèi)置模式式列表。。該列表表包括與與名為CVS的目錄相相匹配的的條目,,以及以以~字符結(jié)尾尾的文件件,它們們可能是是備份文文件。通通常不想想在文件件系統(tǒng)操操作中包包括這類類文件和和目錄,,因此排排除這些些文件是是默認(rèn)行行為。然然而,如如果確實(shí)實(shí)想無例例外地選選擇所所有文文件和目目錄,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年版供水用不銹鋼水箱購銷合同2篇
- 機(jī)械課程設(shè)計干啥的啊
- 智能核儀器基礎(chǔ)課程設(shè)計
- 稅收法制教育課程設(shè)計
- 編曲音樂創(chuàng)作課程設(shè)計
- 羽毛球上課課程設(shè)計
- 機(jī)械設(shè)計課程設(shè)計記錄
- 聯(lián)接軸課程設(shè)計
- 網(wǎng)站前段課課程設(shè)計
- 自動掃地機(jī)課程設(shè)計
- 2023-2024學(xué)年浙江省杭州市上城區(qū)教科版四年級上冊期末考試科學(xué)試卷
- 期末 (試題) -2024-2025學(xué)年人教PEP版英語五年級上冊
- 《三國志》導(dǎo)讀學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 期末 (試題) -2024-2025學(xué)年外研版(三起)(2024)英語三年級上冊
- 使用單位特種設(shè)備安全風(fēng)險管控清單
- 新學(xué)位法專題講座課件
- 員工知識產(chǎn)權(quán)歸屬協(xié)議
- 八卦象數(shù)療法常見配方最新版
- 公務(wù)員級別工資套改辦法
- 年終述職報告
- 集中式中央空調(diào)的設(shè)計預(yù)算畢業(yè)設(shè)計
評論
0/150
提交評論