免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
lesson 1.02 ant的安裝和配置
       在任何穩(wěn)固的軟件工程項(xiàng)目里,構(gòu)建工具都是開發(fā)人員工具包里最重要的一個(gè)部件之一。沒有一個(gè)可靠的構(gòu)建工具,編譯、包裝和發(fā)布過程都會(huì)從復(fù)雜性和時(shí)間需求等方面影響實(shí)際的編程過程。

       用于Java開發(fā)人員的構(gòu)建工具選擇一直被局限于原有的基于UNIX的工具,例如Make。Make及其開放源代碼的派生工具能夠完成任務(wù),但是正式嚴(yán)肅的工作常常還是要依賴于調(diào)用UNIX或者Windows命令來完成。這就意味著,Java代碼即使能夠做到跨平臺(tái)和編寫一次就能各處使用,構(gòu)建系統(tǒng)一般還是只能依賴于某種特定的平臺(tái)。

        Java開發(fā)人員看到了這個(gè)問題,并意識(shí)到:通過提升Java平臺(tái)的功能,他們能夠創(chuàng)建一個(gè)更加強(qiáng)大的構(gòu)建工具,這個(gè)工具是專門為Java程序人員設(shè)計(jì)的,而且不會(huì)依賴于任何特定的平臺(tái)。這就是Ant,一個(gè)由Apache基金會(huì)的Jakarta項(xiàng)目所管理的項(xiàng)目。

       Ant的配置文件是用XML文檔編寫的,所以Java程序員應(yīng)該已經(jīng)很熟悉其的語法了,這同Make聲名狼藉的不友好句法形成了鮮明的對比。更重要的是,構(gòu)建系統(tǒng)用來構(gòu)建項(xiàng)目的所有動(dò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)我們會(huì)在下一篇文章里看到,向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所示的命令會(huì)正確地設(shè)置你的環(huán)境變量。

圖A

設(shè)置Windows的環(huán)境變量

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

圖B

設(shè)置UNIX的環(huán)境變量

要在Windows或者UNIX系統(tǒng)上安裝可選的任務(wù),你需要把可選的jar文件復(fù)制到$ANT_HOME/lib/目錄下。Ant或者ant.bat腳本會(huì)自動(dòng)地把jar文件追加到類的路徑下。

現(xiàn)在我們測試一下,確信Ant已經(jīng)正確安裝好了。在命令行下,輸入ant。你應(yīng)該會(huì)看到一條信息,見C,說Ant無法定位Build.xml文件。這正是我們所期望的,因?yàn)槲覀冞€要配置和創(chuàng)建項(xiàng)目文件。

圖C

創(chuàng)建文件錯(cuò)誤信息

既然Ant已經(jīng)準(zhǔn)備好了讀取項(xiàng)目文件,就讓我們看看項(xiàng)目文件是什么樣的吧。

創(chuàng)建項(xiàng)目

創(chuàng)建項(xiàng)目

為了讓開發(fā)人員的日子更加好過一點(diǎn),Ant的配置文件是使用XML文檔編寫的。這樣開發(fā)人員不用去擔(dān)心空白的問題(Makefiles就有這個(gè)問題),而且許多開發(fā)人員都已經(jīng)能夠正確編寫XML了。

Ant一啟動(dòng)就會(huì)自動(dòng)地加載一個(gè)叫做Build.xml的項(xiàng)目配置文件。如果想給這個(gè)項(xiàng)目配置文件取別的名字,你可以使用buildfile標(biāo)記來運(yùn)行ant,就像下面這樣:

ant -buildfile Project_configuration.xml

Listing A所示的SimpleBuild.xml配置文件里,你會(huì)看到一個(gè)項(xiàng)目標(biāo)簽,它帶有三個(gè)屬性:名字、缺省值和basedir。Ant使用說明里有Ant配置文件里每個(gè)標(biāo)簽的詳細(xì)文檔。你可能要使用Ant使用說明作為參考書來了解哪些是必需的標(biāo)簽,哪些有缺省值。

在項(xiàng)目標(biāo)簽里,你會(huì)看到屬性和目標(biāo)標(biāo)簽。屬性標(biāo)簽創(chuàng)建的變量能夠被任務(wù)和變量擴(kuò)展訪問。正如我們在后面所要看到的一樣,有一些變量,像日期和時(shí)間,能夠在任務(wù)內(nèi)部進(jìn)行設(shè)置,所以不是所有的變量都會(huì)被明確地定義。

在屬性標(biāo)簽后面,你會(huì)看到目標(biāo)標(biāo)簽。你可以定義多個(gè)目標(biāo),每一個(gè)都有不同的名字。你會(huì)注意到目標(biāo)標(biāo)簽的名字是compile,這碰巧和項(xiàng)目標(biāo)簽里的缺省值相對應(yīng)。這就意味著我們在執(zhí)行Ant的時(shí)候,它會(huì)自動(dòng)地啟動(dòng)compile目標(biāo)。

目標(biāo)里有許多的任務(wù),Ant按順序來執(zhí)行它們。你會(huì)發(fā)現(xiàn)構(gòu)建、包裝和發(fā)布過程中幾乎每一件事都可以由Ant的任務(wù)來處理。

在進(jìn)行簡單的構(gòu)建時(shí),我們使用tstamp任務(wù)來把當(dāng)前的日期和時(shí)間設(shè)置到環(huán)境變量里。下一步,我們會(huì)使用mkdir任務(wù)來創(chuàng)建一個(gè)叫做${build}的目錄。(假設(shè)它并不存在。這是我們腳本里命令解釋程序擴(kuò)展的第一個(gè)例子。Ant會(huì)自動(dòng)把“${build}”擴(kuò)展到屬性構(gòu)建所設(shè)置的值里,在這種情況下是build字符串。)

最后,我們會(huì)使用javac任務(wù)來編譯來自src目錄的源代碼,并把輸出保存到構(gòu)建里。

在運(yùn)行Ant時(shí),我們會(huì)讓輸出來顯示每個(gè)目標(biāo)執(zhí)行的狀態(tài),如D所示。

圖D

Ant的輸出

一個(gè)更加深入的例子

一個(gè)更加深入的例子

現(xiàn)在我們看看使用多個(gè)目標(biāo)構(gòu)建一個(gè)稍微復(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源代碼。但是,在這個(gè)例子里,我們啟動(dòng)環(huán)境(init),編譯代碼(compile),把代碼包裝進(jìn)jar(package),再把結(jié)果復(fù)制進(jìn)產(chǎn)品所在的位置(dist)。我們還有一個(gè)在任何代碼編譯以前通過還原來清除環(huán)境的任務(wù)。

在缺省狀態(tài)下,我們會(huì)依次運(yùn)行init,compile,package,然后是dist。你可以看到每個(gè)對象都有已定義的相依性;Ant在依賴相依性的目標(biāo)完成以前就完成好相依性。缺省的目標(biāo)是dist,所以在命令行運(yùn)行ant會(huì)完成所有的任務(wù)。

然而,我們可以通過在命令行指定用所希望的目標(biāo)來執(zhí)行所有步驟中的一部分。例如,我們可以只包裝代碼,而不發(fā)布它。把更大的項(xiàng)目分成多個(gè)目標(biāo)能夠允許開發(fā)人員迅速地進(jìn)行分段構(gòu)建,而不必等待完整構(gòu)建,這會(huì)有助于調(diào)試和保證高質(zhì)量的過程。

內(nèi)置的任務(wù)

既然你已經(jīng)看過了如何創(chuàng)建一個(gè)項(xiàng)目文件,那我們就看一些內(nèi)置的任務(wù)。你會(huì)希望看一下Ant的文檔來獲得任務(wù)的細(xì)節(jié),因?yàn)槟抢锼峁┑男畔⒈任覀冞@里所涉及的要多。

文件系統(tǒng)任務(wù)

你可能會(huì)經(jīng)常使用Ant來完成系統(tǒng)任務(wù):移動(dòng)、修改、復(fù)制和刪除文件。在發(fā)布和清除臨時(shí)文件時(shí),你會(huì)需要移動(dòng)文件。這就是為什么懂得文件系統(tǒng)工具的使用是有必要的原因了。

Listing C所示的Fs.xml 例子,給filesystem回應(yīng)了一條信息。“@…@”標(biāo)志是Ant如何進(jìn)行文本替換的標(biāo)識(shí)。要替換文本就要在將被替換的文本前后加上“@”標(biāo)志。在信息被復(fù)制到磁盤以后,我們創(chuàng)建兩個(gè)目錄,復(fù)制文件,在我們復(fù)制的時(shí)候?qū)Υ疟P上的文件進(jìn)行標(biāo)志替換,再刪除一個(gè)已復(fù)制的文件。E是在Fs.xml構(gòu)建文件上運(yùn)行Ant的輸出結(jié)果。

圖E

Filesystem輸出實(shí)例

使用條件

使用條件
[被屏蔽廣告]

在Ant里構(gòu)建條件不太容易。由于Ant構(gòu)建任務(wù)和目標(biāo)的方法,你不得不小心地構(gòu)造你的陳述式。只有當(dāng)屬性被設(shè)置成真值的時(shí)候,條件才能通過執(zhí)行對象來工作。你可以使用and、ornot陳述式來構(gòu)造你的條件。在一個(gè)條件被發(fā)現(xiàn)為真時(shí),你可以使用antcall任務(wù)來執(zhí)行另一個(gè)目標(biāo)。讓我們來看一個(gè)簡單的例子,它會(huì)確定可選的聲音任務(wù)是否可用,以及它是否在UNIX或者Windows上可用。

Listing D所示的SoundConditional的例子里,你會(huì)看到條件任務(wù)會(huì)調(diào)用兩個(gè)條件陳述式: condWinSound和condUnixSound,但是兩者都不會(huì)主動(dòng)執(zhí)行,除非條件屬性被設(shè)置。條件目標(biāo)會(huì)檢查包裝是否可用(這是可選的jar文件一部分),以及在哪個(gè)平臺(tái)上可用。

包裝

現(xiàn)在,你應(yīng)該已經(jīng)準(zhǔn)備好開始把自己的軟件項(xiàng)目轉(zhuǎn)移到Ant構(gòu)建工具上了。Ant正在越來越多地被開發(fā)人員用來支持大型的Java項(xiàng)目——而且是因?yàn)橛辛撕玫睦碛伞_@些工具是面向Java的、跨平臺(tái)的,而且一般都比面向UNIX的工具要更容易使用。希望本文能夠讓你看到Ant的力量,也能有助于提高你所在組織的產(chǎn)出。在以后的文章里,我們會(huì)來看通過創(chuàng)建自己的任務(wù)如何來擴(kuò)展Ant。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
ANT介紹及安裝及配置
使用 IBM 靜態(tài)工具優(yōu)化 Java 代碼,第 1 部分: 工具入門
ant教程詳解--javac,java,jar,war,delete,copy,mkdir...
Ant學(xué)習(xí)---第一節(jié):Ant安裝和簡單使用
ant實(shí)踐——3、運(yùn)行ANT
我喜歡使用IntelliJ Idea的25個(gè)理由
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服