亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

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

2019-11-18 12:53:41
字體:
來源:轉載
供稿:網友

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

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

  設置Windows的環境變量
  
  在UNIX系統上,假設我們安裝在/usr/local/ant目錄下,圖B所示的命令會正確地設置你的環境變量。
  
  
圖B

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

  設置UNIX的環境變量
  
  要在Windows或者UNIX系統上安裝可選的任務,你需要把可選的jar文件復制到$ANT_HOME/lib/目錄下。Ant或者ant.bat腳本會自動地把jar文件追加到類的路徑下。
  
  現在我們測試一下,確信Ant已經正確安裝好了。在命令行下,輸入ant。你應該會看到一條信息,見圖C,說Ant無法定位Build.xml文件。這正是我們所期望的,因為我們還要配置和創建項目文件。
  
  
圖C

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

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

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

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

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久天堂av综合合色| 成人国产精品日本在线| 久久久久国产一区二区三区| 亚洲成人精品av| 亚洲精品www久久久久久广东| 福利视频一区二区| 亚洲最大成人网色| 日韩精品在线播放| 视频在线观看99| 久久久久久久久国产| 国产精品草莓在线免费观看| 好吊成人免视频| 国产高清视频一区三区| 日韩av毛片网| 国产午夜精品免费一区二区三区| 大桥未久av一区二区三区| 国产精品久久久久9999| 欧美猛男性生活免费| 国产裸体写真av一区二区| 欧美日韩一区二区三区在线免费观看| 久久久电影免费观看完整版| 原创国产精品91| 国产成人精品a视频一区www| 国产在线精品一区免费香蕉| 欧美综合一区第一页| 日韩久久免费视频| 久久久久五月天| 国产精品第3页| 国产精品久久久999| 欧美日韩免费区域视频在线观看| 亚洲欧美日韩久久久久久| 亚洲美女自拍视频| 国产一区二区三区网站| 青青在线视频一区二区三区| 久久精品成人一区二区三区| 午夜欧美不卡精品aaaaa| 亚洲专区中文字幕| 亚洲精品99久久久久中文字幕| 国产成人啪精品视频免费网| 福利一区福利二区微拍刺激| 自拍偷拍亚洲欧美| 国产亚洲一区二区在线| 日韩av综合网站| 欧美精品精品精品精品免费| 欧美性极品xxxx做受| 欧美一级大片在线观看| 亚洲小视频在线| 中文字幕亚洲情99在线| 日本a级片电影一区二区| 亚洲一区二区久久久久久| 日韩av观看网址| 一区二区三区无码高清视频| 日韩中文字幕免费视频| 91精品国产精品| 精品国内产的精品视频在线观看| 亚洲国产精品成人一区二区| 5566成人精品视频免费| 日韩av在线免费观看| 国产一区玩具在线观看| 日韩在线观看av| 日韩成人激情视频| 欧美视频中文字幕在线| 亚洲精品国产精品国产自| 欧美精品www| 97成人精品区在线播放| 午夜伦理精品一区| 九九热视频这里只有精品| 日韩av电影手机在线| 亚洲香蕉伊综合在人在线视看| 欧美老少配视频| 日韩成人久久久| 日韩中文字幕网址| 美女久久久久久久久久久| 国产精品综合不卡av| 26uuu亚洲伊人春色| 欧美激情在线观看| 欧美在线日韩在线| 国产免费一区二区三区香蕉精| 日韩免费观看在线观看| 911国产网站尤物在线观看| 91在线视频精品| 欧美精品激情blacked18| 精品中文字幕在线| 97在线视频观看| 97精品视频在线| 久久夜色撩人精品| 国产精品亚发布| 亚洲男人7777| 97av在线视频免费播放| 亚洲女成人图区| 欧美电影在线观看完整版| 北条麻妃一区二区在线观看| 日av在线播放中文不卡| 久久精品在线视频| 欧美日韩国产色视频| 国产精品欧美一区二区| 一区二区三区回区在观看免费视频| 久久精品国产96久久久香蕉| 人九九综合九九宗合| 欧美裸体xxxx极品少妇软件| 成人a免费视频| 一道本无吗dⅴd在线播放一区| 亚洲欧美日韩综合| 亚洲精美色品网站| 91黄色8090| 日产精品99久久久久久| 福利精品视频在线| 操日韩av在线电影| 久久久精品久久| 亚洲另类图片色| 国产精品女主播视频| 亚洲男人天堂2024| 欧美精品情趣视频| 亚洲第一天堂无码专区| 欧洲亚洲女同hd| 九九热这里只有在线精品视| 亚洲裸体xxxx| 欧美另类高清videos| 久久久久久国产三级电影| 青青草99啪国产免费| 日本精品视频网站| 97久久国产精品| 91免费看视频.| 精品视频—区二区三区免费| 日韩在线观看高清| 久久久久久尹人网香蕉| 久久久久亚洲精品成人网小说| 日韩暖暖在线视频| 一道本无吗dⅴd在线播放一区| 久久的精品视频| 亚洲欧美成人一区二区在线电影| 91精品国产91久久久久福利| 亚洲乱码一区二区| 亚洲一区二区少妇| 亚洲国产精品久久久久久| 国产精品久久一区| 欧美日韩国产成人在线| 久久久www成人免费精品| 国产成人一区二| 一区二区欧美久久| 国产成人精品视频在线观看| 亚洲一区国产精品| 欧美xxxx18性欧美| 欧美多人爱爱视频网站| 欧美日韩精品在线播放| 热门国产精品亚洲第一区在线| 亚洲精品在线不卡| 欧美成人午夜剧场免费观看| 亚洲天堂av在线免费| 97视频在线播放| 久99久在线视频| 久久中文精品视频| 久久资源免费视频| 日韩经典中文字幕在线观看| 九九热视频这里只有精品| 欧美国产日韩一区二区在线观看| 欧美诱惑福利视频| 亚洲精品wwwww| 欧美国产一区二区三区| 在线观看精品国产视频| 久久国产精品久久久久久久久久| 国产精品嫩草影院一区二区| 欧美综合在线观看| 国产精彩精品视频|