熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

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

2013-11-23 20:19:27  來源: Java開源技術 

  在任何穩固的軟件工程項目裡構建工具都是開發人員工具包裡最重要的一個部件之一沒有一個可靠的構建工具編譯包裝和發布過程都會從復雜性和時間需求等方面影響實際的編程過程
  
  用於Java開發人員的構建工具選擇一直被局限於原有的基於UNIX的工具例如MakeMake及其開放源代碼的派生工具能夠完成任務但是正式嚴肅的工作常常還是要依賴於調用UNIX或者Windows命令來完成這就意味著Java代碼即使能夠做到跨平台和編寫一次就能各處使用構建系統一般還是只能依賴於某種特定的平台
  
  Java開發人員看到了這個問題並意識到通過提升Java平台的功能他們能夠創建一個更加強大的構建工具這個工具是專門為Java程序人員設計的而且不會依賴於任何特定的平台這就是Ant一個由Apache基金會的Jakarta項目所管理的項目
  
  Ant的配置文件是用XML文檔編寫的所以Java程序員應該已經很熟悉其的語法了這同Make聲名狼藉的不友好句法形成了鮮明的對比更重要的是構建系統用來構建項目的所有動作也就是任務也是用Java編寫的所以同樣的構建文件能夠被運行在任何可以使用Java編譯器的地方在Ant裡所有的東西都是獨立自主的
  
  在本文裡我們將看到如何安裝Ant如何創建用於構建項目的配置文件以及如何使用可用的內置系統和條件任務
  
  安裝Ant
  
  要開始的話我們就需要先去Ant主頁它上面有最新的發行版本在線使用手冊和FAQ在下載和安裝Ant以前你需要先安裝Java開發工具包(或更高版本)需要設置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

  
 

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

  
 

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

  
 

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

  
 

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

  

  Filesystem輸出實例
  
  使用條件
  
  在Ant裡構建條件不太容易由於Ant構建任務和目標的方法你不得不小心地構造你的陳述式只有當屬性被設置成真值的時候條件才能通過執行對象來工作你可以使用andor和not陳述式來構造你的條件在一個條件被發現為真時你可以使用antcall任務來執行另一個目標讓我們來看一個簡單的例子它會確定可選的聲音任務是否可用以及它是否在UNIX或者Windows上可用
  
  在Listing D所示的SoundConditional的例子裡你會看到條件任務會調用兩個條件陳述式 condWinSound和condUnixSound但是兩者都不會主動執行除非條件屬性被設置條件目標會檢查包裝是否可用(這是可選的jar文件一部分)以及在哪個平台上可用
  
  包裝
  
  現在你應該已經准備好開始把自己的軟件項目轉移到Ant構建工具上了Ant正在越來越多地被開發人員用來支持大型的Java項目——而且是因為有了好的理由這些工具是面向Java的跨平台的而且一般都比面向UNIX的工具要更容易使用希望本文能夠讓你看到Ant的力量也能有助於提高你所在組織的產出在以後的文章裡我們會來看通過創建自己的任務如何來擴展Ant
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28307.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.