2012年11月5日 星期一

ANT

執行方式
Ant
表示當前目錄的構建文件為build.xml 運行 ant 執行默認的目標。

Ant –buildfile   test.xml
使用當前目錄下的test.xml 文件運行Ant ,執行默認的目標






ANT典型的層次結構

src存放原始碼
class存放邊譯過的文件
lib存放第三方的jar
dist存放打包發佈後的文件

每個build.xml文件定義一個唯一的項目(Project元素)。
每個項目下可以定義很多目標(target元素),
這些目標之間可以有依賴關係。
當執行這類目標時,需要執行他們所依賴的目標。 

 每個target中可以定義多個任務,其中還定義了所要執行的任務序列。
Ant在構建target時必須調用所定義的任務。

(1) 核心任務。(Ant自帶的任務)
(2) 可選任務。可選任務實來自第三方的任務,因此需要一個附加的JAR文件。
(3) 用戶自定義的任務。

<project>標籤
內在屬性
    (1) default表示默認的運行目標,這個屬性是必須的。
    (2) basedir表示項目的基準目錄。
    (3) name表示項目名。
    (4) description表示項目的描述。 

<target>標籤
一個項目標籤下可以有一個或多個target標籤。
一個target標籤可以依賴其他的target標籤。
target的所有屬性如下。
    (1).name表示標明,這個屬性是必須的。
    (2).depends表示依賴的目標。
    (3)if表示僅當屬性設置時才執行。
    (4)unless表示當屬性沒有設置時才執行。
    (5)description表示項目的描述。 

每個target。在執行之前,首先需要執行它所依賴的target。
例如程序中的名為run的target的depends屬性compile,
而名為compile的target的depends屬性是prepare,
所以這幾個target執行的順序是prepare->compile->run。


<property >標籤
定義需要的變數名稱
    (1).name表示變數名,這個屬性是必須的。
    (2).value表示變數其內的值。
  例如<property name="class.root" value="${basedir}/test"/>

<mkdir>標籤
該標籤用於創建一個目錄,它有一個屬性dir用來指定所創建的目錄名,其代碼如下:
<mkdir dir="${class.root}"/>
通過以上代碼就創建了一個目錄,這個目錄已經被前面的property標籤所指定。

<jar>標籤
該標籤用來生成一個JAR文件,其屬性如下。
    (1) destfile表示JAR文件名。
    (2) basedir表示被歸檔的文件名。
    (3) includes表示別歸檔的文件模式。
    (4) exchudes表示被排除的文件模式。
例如
   <jar jarfile="${jar.file}" basedir="${class.dir}">
            <exclude name="**/*.html"/>
   </jar>

<javac標籤>
該標籤用於編譯一個或一組java文件,其屬性如下。
    (1).srcdir表示源程序的目錄。
    (2).destdir表示class文件的輸出目錄。
    (3).include表示被編譯的文件的模式。
    (4).excludes表示被排除的文件的模式。
    (5).classpath表示所使用的類路徑。
    (6).debug表示包含的調試信息。
    (7).optimize表示是否使用優化。
    (8).verbose 表示提供詳細的輸出信息。
    (9).fileonerror表示當碰到錯誤就自動停止。
例如
<javac srcdir="${test.src.dir}"
               destdir="${test.class.dir}"
               debug="${build.debug}"
               debuglevel="${build.debuglevel}"
               source="${build.source}"
               target="${build.target}"
               deprecation="${build.deprecation}">
            <classpath refid="test.classpath"/>
            <compilerarg line="${build.extraparams}"/>
  </javac>

<java>標籤
該標籤用來執行編譯生成的.class文件,其屬性如下。
    (1).classname 表示將執行的類名。
    (2).jar表示包含該類的JAR文件名。
    (3).classpath所表示用到的類路徑。
    (4).fork表示在一個新的虛擬機中運行該類。
    (5).failonerror表示當出現錯誤時自動停止。
    (6).output 表示輸出文件。
    (7).append表示追加或者覆蓋默認文件。

<delete>標籤
該標籤用於刪除一個文件或一組文件,去屬性如下。
    (1)/file表示要刪除的文件。
    (2).dir表示要刪除的目錄。
    (3).includeEmptyDirs 表示指定是否要刪除空目錄,默認值是刪除。
    (4).failonerror 表示指定當碰到錯誤是否停止,默認值是自動停止。
    (5).verbose表示指定是否列出所刪除的文件,默認值為不列出。
例如
    <delete dir="${class.dir}"/>
    <delete file="${jar.file}"/>
      

<copy>標籤
該標籤用於文件或文件集的拷貝,其屬性如下。
    (1).file 表示源文件。
    (2).tofile 表示目標文件。
    (3).todir 表示目標目錄。
    (4).overwrite 表示指定是否覆蓋目標文件,默認值是不覆蓋。
    (5).includeEmptyDirs 表示制定是否拷貝空目錄,默認值為拷貝。
    (6).failonerror 表示指定如目標沒有發現是否自動停止,默認值是停止。 
    (7).verbose 表示制定是否顯示詳細信息,默認值不顯示。 
例如
    <copy todir="${class.dir}">
    <fileset dir="${basedir}" includes="*.properties"/>
    <fileset dir="${src.dir}" includes="**/*.xml"/>
    </copy>       


Ant的數據類型
數據類型包含在org.apache.tool.ant.types包中
幾個常用的數據類型。 

1. argument 類型
可以通過<arg>元素向其傳遞命令行參數
    (1).values 是個命令參數。如果參數種有空格,但又想將它作為單獨一個值,則使用此屬性
    (2).file表示一個參數的文件名。在構建文件中,此文件名相對於當前的工作目錄。
    (3).line表示用空格分隔的多個參數列表。    
    (4).path表示路徑。

2.ervironment 類型
   由Ant構建文件調用的外部命令或程序,
    <env>元素制定了哪些環境變量要傳遞給正在執行的 系統命令,
    可以接受以下屬性。
    (1).file表示環境變量值得文件名。此文件名要被轉換位一個絕對路徑。
    (2).path表示環境變量的路徑。Ant會將它轉換為一個本地約定。
    (3).value 表示環境變量的一個直接變量。
    (4).key 表示環境變量名。
注意file path 或 value只能取一個。

3.filelist類型
Filelist 是一個支持命名的文件列表的數據類型,包含在一個filelist類型中的文件不一定是
存在的文件。以下是其所有的屬性。
    (1).dir是用於計算絕對文件名的目錄。
    (2).files 是用逗號分隔的文件名列表。
    (3).refid 是對某處定義的一個<filelist>的引用。
注意dir和files 都是必要的,除非指定了refid(這種情況下,dir和files都不允許使用)。

4.fileset類型
Fileset 數據類型定義了一組文件,並通常表示為<fileset>元素。不過,許多ant任務構建成了
隱式的fileset,這說明他們支持所有的fileset屬性和嵌套元素。以下為fileset 的屬性列表。
    (1).dir表示fileset 的基目錄。
    (2).casesensitive的值如果為false,那麼匹配文件名時,fileset不是區分大小寫的,其默認
         值為true.
    (3).defaultexcludes 用來確定是否使用默認的排除模式,默認為true。
    (4).excludes 是用逗號分隔的需要派出的文件模式列表。
    (5).excludesfile 表示每行包含一個排除模式的文件的文件名。
    (6).includes 是用逗號分隔的,需要包含的文件模式列表。
    (7).includesfile 表示每行包括一個包含模式的文件名。

5.patternset 類型
Fileset 是對文件的分組,而patternset是對模式的分組,他們是緊密相關的概念。
<patternset>支持4個屬性:
    (1)includes
    (2)excludex
    (3)includexfile
    (4)excludesfile
與fileset相同。Patternset 還允許以下嵌套元素:include,exclude,includefile 和 excludesfile.

6.filterset 類型
Filterset定義了一組過濾器,這些過濾器將在文件移動或複製時完成文件的文本替換。
主要屬性如下:
    (1).begintoken 表示嵌套過濾器所搜索的記號,這是標識其開始的字符串。
    (2).endtoken表示嵌套過濾器所搜索的記號這是標識其結束的字符串。
    (3).id是過濾器的唯一標誌符。
    (4).refid是對構建文件中某處定義一個過濾器的引用。

7.Path類型
Path元素用來表示一個類路徑,不過它還可以用於表示其他的路徑。在用作揖個屬性時,路經中的各項用分號或冒號隔開。在構建的時候,此分隔符將代替當前平台中所有的路徑分隔符,其擁有的屬性如下。
    (1).location 表示一個文件或目錄。Ant在內部將此擴展為一個絕對路徑。
    (2).refid 是對當前構建文件中某處定義的一個path的引用。
    (3).path表示一個文件或路徑名列表。

8.mapper類型
Mapper類型定義了一組輸入文件和一組輸出文件間的關係,其屬性如下。
    (1).classname 表示實現mapper類的類名。當內置mapper不滿足要求時,用於創建定製     mapper.
    (2).classpath表示查找一個定製mapper時所用的類型路徑。
    (3).classpathref是對某處定義的一個類路徑的引用。
    (4).from屬性的含義取決於所用的mapper.
    (5).to屬性的含義取決於所用的mapper.
    (6).type屬性的取值為identity,flatten glob merge  
regexp其中之一,它定義了要是用的
內置mapper的類型。
 

沒有留言:

張貼留言