天天看點

Apache Ant 快速參考手冊

Apache Ant 快速參考手冊

2010年06月30日

  本文将對Apache Ant中常用的标簽(任務),參數配置進行介紹,以供快速參考使用。 Apache Ant的首頁在這裡:http://ant.apache.org/

  一、Ant簡介

  Ant是一種基于Java的build工具,旨在改進make工具的缺點和局限性。一般來說,基于shell的makefile在使用中或許會帶來一些問題,比如使用了特定平台的指令造成移植問題以及文本tab問題等。而且在用于編譯Java代碼時也相對比較繁瑣(classpath配置等)。

  與基于shell指令的擴充模式不同,Ant用Java的類來擴充。(使用者)不必編寫shell指令,配置檔案是基于XML的,通過調用target樹,就可執行各種task。每個task由實作了一個實作了特定Task接口的對象來運作。

  ant預設加載的配置檔案名為 build.xml,如果需要指定其他檔案可以通過 -buildfile或-file和-f參數指定(ant -buildfile mybuild.xml)。後面可以再加上建構目标的名字(類似于make的用法)。

  二、一個簡單的build.xml

  在下面的例子中,使用了javac(編譯)和java(運作)task project标簽指定了項目的名稱,基本路徑以及預設的build目标(default)。

  最後,在與該xml相同的目錄下使用ant指令,即可完成Java代碼的編譯和執行

  三、Ant常用任務(task)

  本節将對Ant常用task标簽進行介紹。

  1. 定義變量

  對于在配置檔案中需要多次使用的基本路徑,可以在project下面定義一個property标簽,它的使用方法就像使用變量一樣。例如:

  

  說明:name表示變量的名稱,location表示變量的值。

  使用該變量的方法如下:

   2. 建立目錄和删除目錄

  使用ant可以很友善的建立和删除目錄,并可以一次建立和删除多級目錄。如下面所示:

  

  

  說明:dir表示要建立或者删除的目錄名。也可以一次定義多級目錄。例如:${webapps}/WEB-INF/classes

  注意:删除目錄的時候,其子目錄和目錄内的檔案都将一并被删除。

  3. 編譯檔案

  使用javac标簽可以進行java程式的編譯工作。其基本例子如下:

  

  

  說明:srcdir就是Source directory,也就是要編譯的源檔案的目錄。Descdir就是編譯好的檔案的目标路徑。除了這兩個最基本的屬性外還有debug,encoding等屬性。

  其中debug表明編譯的時候是否需要把debug資訊編譯到class檔案中(debug=true),如果不加這個參數,就相當于編譯的指令行後面增加了-g:none參數。

  Encoding表明以何種編碼方式來編譯你的源檔案(encoding="utf-8"),和指令行的-encoding參數一樣。

  此外還有source和target屬性,source用于指定解析代碼時JDK的版本(預設為1.3,指定1.4+會激活斷言);target用于指定生成的目标代碼執行環境(target="1.5"為JDK1.5+環境)。

  另外,javac标簽還可以包含classpath子标簽,表明你在編譯的時候需要使用到的jar包或者其他class檔案所在的路徑。其使用方法如下:

  在javac标簽中直接使用classpath:

  

  

  也可以事先單獨定義,然後再使用:

  

  

  

   标簽也可以寫作javac标簽的屬性:classpathref="classpath" target="_blank" rel="external nofollow"

  4. 打包操作

  打包操作就是将編譯好的class檔案打包成一個jar檔案。其基本用法如下:

  

  說明:destfile屬性表示打包後生成的目标檔案的名稱。basedir表示class檔案所在的路徑,該目錄下的所有檔案都将被打包到jar檔案中。

  對于複雜的情況可以采用以下的方法來解決:

  

  

  

  

  其中,excludes屬性用于指定要排除的檔案

  5. 複制檔案操作

  複制檔案操作就是将一系列的檔案從一個目錄下拷貝到另一個目錄下。其基本的用法如下:

  

  

  

  

  

  

  說明:todir表示目标目錄。overwrite表示是否覆寫。flattern表示是否丢棄源檔案的目錄結構(如果源檔案夾中包含多級目錄,這些目錄也會被建立在目标檔案夾中)。

  提示:如果不包括include和exclude屬性,那麼會将源目錄下的所有檔案和檔案夾拷貝到目标目錄中。

  以上是ant的基本用法,更多的task标簽及屬性說明,可以參見Ant的線上手冊:http://ant.apache.org/manual/index.html