国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Lesson 1.02 Ant的安裝和配置(圖)

2019-11-18 12:53:41
字體:
供稿:網(wǎng)友

  在任何穩(wěn)固的軟件工程項(xiàng)目里,構(gòu)建工具都是開發(fā)人員工具包里最重要的一個部件之一。沒有一個可靠的構(gòu)建工具,編譯、包裝和發(fā)布過程都會從復(fù)雜性和時間需求等方面影響實(shí)際的編程過程。
  
  用于java開發(fā)人員的構(gòu)建工具選擇一直被局限于原有的基于UNIX的工具,例如Make。Make及其開放源代碼的派生工具能夠完成任務(wù),但是正式嚴(yán)厲的工作經(jīng)常還是要依靠于調(diào)用UNIX或者Windows命令來完成。這就意味著,Java代碼即使能夠做到跨平臺和編寫一次就能各處使用,構(gòu)建系統(tǒng)一般還是只能依靠于某種特定的平臺。
  
  Java開發(fā)人員看到了這個問題,并意識到:通過提升Java平臺的功能,他們能夠創(chuàng)建一個更加強(qiáng)大的構(gòu)建工具,這個工具是專門為Java程序人員設(shè)計(jì)的,而且不會依靠于任何特定的平臺。這就是Ant,一個由Apache基金會的Jakarta項(xiàng)目所治理的項(xiàng)目。
  
  Ant的配置文件是用xml文檔編寫的,所以Java程序員應(yīng)該已經(jīng)很熟悉其的語法了,這同Make聲名狼藉的不友好句法形成了鮮明的對比。更重要的是,構(gòu)建系統(tǒng)用來構(gòu)建項(xiàng)目的所有動作,也就是任務(wù),也是用Java編寫的;所以同樣的構(gòu)建文件能夠被運(yùn)行在任何可以使用Java編譯器的地方。在Ant里,所有的東西都是獨(dú)立自主的。
  
  在本文里,我們將看到如何安裝Ant,如何創(chuàng)建用于構(gòu)建項(xiàng)目的配置文件,以及如何使用可用的內(nèi)置系統(tǒng)和條件任務(wù)。
  
  安裝Ant
  
  要開始的話,我們就需要先去Ant主頁,它上面有最新的發(fā)行版本、在線使用手冊和FAQ。在下載和安裝Ant以前,你需要先安裝Java開發(fā)工具包(1.2或更高版本),需要設(shè)置JAVA_HOME環(huán)境變量,在你的可執(zhí)行路徑里還需要javac編譯器。
  
  你可以從Jakata網(wǎng)站下載預(yù)編譯的ANT。你還要用到可選的Java Archive(JAR)文件,其包含的任務(wù)能有助于與其他開發(fā)工具進(jìn)行集成。Ant也是開放源代碼軟件,所以假如你想修改任何內(nèi)部組件來使其適應(yīng)于自己的開發(fā)環(huán)境,這沒有問題。你要做的只是下載源代碼。但是要注重的是,Ant靈活性極強(qiáng),這一點(diǎn)我們會在下一篇文章里看到,向Ant添加功能是很輕易的,而且不需要更改源代碼。
  
  一旦下載完了二進(jìn)制包,你只需要簡單地把文件解壓到希望安裝Ant的地方。對于Windows系統(tǒng),解壓到c:/ant/;在UNIX系統(tǒng)上,你可能希望安裝到/usr/local/ant/或者/opt/ant/下。
  
  下一步,你需要設(shè)置自己的環(huán)境變量,即ANT_HOME。在Windows上,假如我們安裝到c:/ant目錄下,圖A所示的命令會正確地設(shè)置你的環(huán)境變量。
  
  
圖A

  
 Lesson 1.02 Ant的安裝和配置(圖)(圖一)

  設(shè)置Windows的環(huán)境變量
  
  在UNIX系統(tǒng)上,假設(shè)我們安裝在/usr/local/ant目錄下,圖B所示的命令會正確地設(shè)置你的環(huán)境變量。
  
  
圖B

  
 Lesson 1.02 Ant的安裝和配置(圖)(圖二)

  設(shè)置UNIX的環(huán)境變量
  
  要在Windows或者UNIX系統(tǒng)上安裝可選的任務(wù),你需要把可選的jar文件復(fù)制到$ANT_HOME/lib/目錄下。Ant或者ant.bat腳本會自動地把jar文件追加到類的路徑下。
  
  現(xiàn)在我們測試一下,確信Ant已經(jīng)正確安裝好了。在命令行下,輸入ant。你應(yīng)該會看到一條信息,見圖C,說Ant無法定位Build.xml文件。這正是我們所期望的,因?yàn)槲覀冞€要配置和創(chuàng)建項(xiàng)目文件。
  
  
圖C

  
 Lesson 1.02 Ant的安裝和配置(圖)(圖三)

  創(chuàng)建文件錯誤信息
  
  既然Ant已經(jīng)預(yù)備好了讀取項(xiàng)目文件,就讓我們看看項(xiàng)目文件是什么樣的吧。創(chuàng)建項(xiàng)目
  
  創(chuàng)建項(xiàng)目
  
  為了讓開發(fā)人員的日子更加好過一點(diǎn),Ant的配置文件是使用XML文檔編寫的。這樣開發(fā)人員不用去擔(dān)心空白的問題(Makefiles就有這個問題),而且許多開發(fā)人員都已經(jīng)能夠正確編寫XML了。
  
  Ant一啟動就會自動地加載一個叫做Build.xml的項(xiàng)目配置文件。假如想給這個項(xiàng)目配置文件取別的名字,你可以使用buildfile標(biāo)記來運(yùn)行ant,就像下面這樣:
  
  ant -buildfile PRoject_configuration.xml
  
  在Listing A所示的SimpleBuild.xml配置文件里,你會看到一個項(xiàng)目標(biāo)簽,它帶有三個屬性:名字、缺省值和basedir。Ant使用說明里有Ant配置文件里每個標(biāo)簽的具體文檔。你可能要使用Ant使用說明作為參考書來了解哪些是必需的標(biāo)簽,哪些有缺省值。
  
  在項(xiàng)目標(biāo)簽里,你會看到屬性和目標(biāo)標(biāo)簽。屬性標(biāo)簽創(chuàng)建的變量能夠被任務(wù)和變量擴(kuò)展訪問。正如我們在后面所要看到的一樣,有一些變量,像日期和時間,能夠在任務(wù)內(nèi)部進(jìn)行設(shè)置,所以不是所有的變量都會被明確地定義。
  
  在屬性標(biāo)簽后面,你會看到目標(biāo)標(biāo)簽。你可以定義多個目標(biāo),每一個都有不同的名字。你會注重到目標(biāo)標(biāo)簽的名字是compile,這碰巧和項(xiàng)目標(biāo)簽里的缺省值相對應(yīng)。這就意味著我們在執(zhí)行Ant的時候,它會自動地啟動compile目標(biāo)。
  
  目標(biāo)里有許多的任務(wù),Ant按順序來執(zhí)行它們。你會發(fā)現(xiàn)構(gòu)建、包裝和發(fā)布過程中幾乎每一件事都可以由Ant的任務(wù)來處理。
  
  在進(jìn)行簡單的構(gòu)建時,我們使用tstamp任務(wù)來把當(dāng)前的日期和時間設(shè)置到環(huán)境變量里。下一步,我們會使用mkdir任務(wù)來創(chuàng)建一個叫做${build}的目錄。(假設(shè)它并不存在。這是我們腳本里命令解釋程序擴(kuò)展的第一個例子。Ant會自動把“${build}”擴(kuò)展到屬性構(gòu)建所設(shè)置的值里,在這種情況下是build字符串。)
  
  最后,我們會使用javac任務(wù)來編譯來自src目錄的源代碼,并把輸出保存到構(gòu)建里。
  
  在運(yùn)行Ant時,我們會讓輸出來顯示每個目標(biāo)執(zhí)行的狀態(tài),如圖D所示。
  
  
圖D

  
 Lesson 1.02 Ant的安裝和配置(圖)(圖四)

  Ant的輸出
  
  一個更加深入的例子
  
  現(xiàn)在我們看看使用多個目標(biāo)構(gòu)建一個稍微復(fù)雜一點(diǎn)的配置的例子。
  
  在Listing B所示的Medium.xml例子里,配置內(nèi)容被分成的目標(biāo)比SimpleBuild.xml例子里的更多。把構(gòu)建過程分成不同的目標(biāo)意味著Ant可以從任何點(diǎn)進(jìn)入構(gòu)建過程。在SimpleBuild.xml里,我們只用簡單地編譯Java源代碼。但是,在這個例子里,我們啟動環(huán)境(init),編譯代碼(compile),把代碼包裝進(jìn)jar(package),再把結(jié)果復(fù)制進(jìn)產(chǎn)品所在的位置(dist)。我們還有一個在任何代碼編譯以前通過還原來清除環(huán)境的任務(wù)。
  
  在缺省狀態(tài)下,我們會依次運(yùn)行init,compile,package,然后是dist。你可以看到每個對象都有已定義的相依性;Ant在依靠相依性的目標(biāo)完成以前就完成好相依性。缺省的目標(biāo)是dist,所以在命令行運(yùn)行ant會完成所有的任務(wù)。
  
  然而,我們可以通過在命令行指定用所希望的目標(biāo)來執(zhí)行所有步驟中的一部分。例如,我們可以只包裝代碼,而不發(fā)布它。把更大的項(xiàng)目分成多個目標(biāo)能夠答應(yīng)開發(fā)人員迅速地進(jìn)行分段構(gòu)建,而不必等待完整構(gòu)建,這會有助于調(diào)試和保證高質(zhì)量的過程。
  
  內(nèi)置的任務(wù)
  
  既然你已經(jīng)看過了如何創(chuàng)建一個項(xiàng)目文件,那我們就看一些內(nèi)置的任務(wù)。你會希望看一下Ant的文檔來獲得任務(wù)的細(xì)節(jié),因?yàn)槟抢锼峁┑男畔⒈任覀冞@里所涉及的要多。
  
  文件系統(tǒng)任務(wù)
  
  你可能會經(jīng)常使用Ant來完成系統(tǒng)任務(wù):移動、修改、復(fù)制和刪除文件。在發(fā)布和清除臨時文件時,你會需要移動文件。這就是為什么懂得文件系統(tǒng)工具的使用是有必要的原因了。
  
  Listing C所示的Fs.xml 例子,給filesystem回應(yīng)了一條信息?!癅…@”標(biāo)志是Ant如何進(jìn)行文本替換的標(biāo)識。要替換文本就要在將被替換的文本前后加上“@”標(biāo)志。在信息被復(fù)制到磁盤以后,我們創(chuàng)建兩個目錄,復(fù)制文件,在我們復(fù)制的時候?qū)Υ疟P上的文件進(jìn)行標(biāo)志替換,再刪除一個已復(fù)制的文件。圖E是在Fs.xml構(gòu)建文件上運(yùn)行Ant的輸出結(jié)果。
  
  
圖E

  
Lesson 1.02 Ant的安裝和配置(圖)(圖五)

  Filesystem輸出實(shí)例
  
  使用條件
  
  在Ant里構(gòu)建條件不太輕易。由于Ant構(gòu)建任務(wù)和目標(biāo)的方法,你不得不小心地構(gòu)造你的陳述式。只有當(dāng)屬性被設(shè)置成真值的時候,條件才能通過執(zhí)行對象來工作。你可以使用and、or和not陳述式來構(gòu)造你的條件。在一個條件被發(fā)現(xiàn)為真時,你可以使用antcall任務(wù)來執(zhí)行另一個目標(biāo)。讓我們來看一個簡單的例子,它會確定可選的聲音任務(wù)是否可用,以及它是否在UNIX或者Windows上可用。
  
  在Listing D所示的SoundConditional的例子里,你會看到條件任務(wù)會調(diào)用兩個條件陳述式: condWinSound和condUnixSound,但是兩者都不會主動執(zhí)行,除非條件屬性被設(shè)置。條件目標(biāo)會檢查包裝是否可用(這是可選的jar文件一部分),以及在哪個平臺上可用。
  
  包裝
  
  現(xiàn)在,你應(yīng)該已經(jīng)預(yù)備好開始把自己的軟件項(xiàng)目轉(zhuǎn)移到Ant構(gòu)建工具上了。Ant正在越來越多地被開發(fā)人員用來支持大型的Java項(xiàng)目——而且是因?yàn)橛辛撕玫睦碛伞_@些工具是面向Java的、跨平臺的,而且一般都比面向UNIX的工具要更輕易使用。希望本文能夠讓你看到Ant的力量,也能有助于提高你所在組織的產(chǎn)出。在以后的文章里,我們會來看通過創(chuàng)建自己的任務(wù)如何來擴(kuò)展Ant。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 松江区| 宜昌市| 常宁市| 涿州市| 淅川县| 霍山县| 无为县| 三门峡市| 周口市| 富平县| 遂平县| 古浪县| 秀山| 涞水县| 武川县| 明溪县| 肥东县| 隆德县| 抚宁县| 瑞昌市| 桑植县| 南城县| 陵水| 林州市| 西贡区| 东平县| 台中县| 福州市| 天柱县| 明星| 蛟河市| 吉林省| 天台县| 松江区| 社会| 宁明县| 巴林左旗| 临夏市| 鄂托克旗| 东方市| 洛隆县|