輕量級JavaEE企業應用實戰(二)

Ant工具的使用

1.想讓Ant使用其他生成文件,可以使用-buildfile,可以用-file或-f替代

例如:

        ant -f a.xml  //顯式指定使用a.xml作爲生成文件

        ant -file b.xml  //顯式指定使用b.xml作爲生成文件

2.如果希望Ant運行時,只輸出少量信息使用-quiet或-q;反之,輸出更多信息使用-verbose或-v;

3.如果希望Ant將信息打印到日誌,而不是直接到控制檯,可以用-logfile或-l

例如:

        ant -verbose -l a.log  //運行Ant時輸出更多信息,並將信息輸出到a.log

4.除此之外,Ant支持指定一些屬性來覆蓋生成文件中指定的屬性值,使用Property task

例如:

        -D<Property>=<value>  //此處的value將會覆蓋生成文件中的property屬性

通過該方法還可以將操作系統的環境變量值傳入生成文件

例如:

        ant -Denv1 = %ANT_HOME% //向生成文件傳入一個env1屬性

 

定義生成文件

 

Ant生成文件默認名爲build.xml,也可以爲其他名稱;生成文件一般放在項目的頂層目錄,有利於保持項目的簡潔和清晰

Ant生成文件的根元素是<project.../>,每個項目下可以定義多個生成目標,每個生成目標用<target .../>來定義,它是project

的子元素

<project name="struts2" //指定項目名,對編譯、生成項目沒有太大作用
description="demo" //項目的描述信息,對...沒有大作用
basedir="." //項目的基準路徑,生成文件彙總的其他相對路徑都是基於該路徑
default=""> //默認target這個是必須的。如果ant.bat命令沒有顯式指定運行的target,則運行default


target元素

name:指定target名稱,必需;ant運行指定目標時,根據該name來確定生成目標:同一個生成文件不能有兩個相同的target元素

description:target描述信息

<target name="run" depends="compile"> //執行run target之前,必須先執行compile target
<target name="exA" if="prop1"> //僅當設置了prop1屬性時,才執行exA target
<target name="exB" unless="prop2"> //只要沒有設置prop2屬性,就可以執行exB target


簡而言之:Ant生成文件中基本結構是project元素裏包含多個target元素,每個target元素裏包含多個任務

Ant任務分類

1.核心任務:Ant自帶任務

2.可選任務:來自第三方的任務,因此需要一個附加的文件

3.用戶自定義的任務:用戶自己開發的任務

 

property元素

property元素用於定義一個或多個屬性,ant生成文件中屬性類似於編程語言中的宏變量,不同的是:Ant生成文件中的屬性值不可改變

<property name="builddir" value="dd"> 
如果獲取該屬性值,使用${propName}形式
注:$符號在Ant中有特殊意義,如果想將ANT生成文件$當做普通字符,則使用$$
<echo>$${builddir}=${builddir}</echo>
屬性:
  name:指定需要設置的屬性名
  value:指定需要設置的屬性值
  resource:指定屬性文件的資源名稱,Ant將負責從屬性文件中讀取屬性名和屬性值
  file:指定屬性文件的文件名
  url:指定屬性文件的URL地址
  environment:用於指定系統環境變量的前綴,通過這種方式允許Ant訪問系統環境變量
  classpath:指定搜索屬性文件的文件和路徑集
  claaapathref:指定搜索屬性文件和路徑集引用,該屬性並不是直接給出系列文件或路徑,而是給定文件和路徑集引用
<property file="foo.properties"> //讀取此文件中的屬性名和值
<property url=<a target=_blank href="http://www.crazyit.org/props/foo.properties">www.crazyit.org/props/foo.properties</a>> //從URL讀取屬性名和值
<property environment="env"> //通過property元素可以讓Ant生成文件訪問到操作系統的環境變量
<echo>${env.JAVA_HOME}</echo>
 

path元素和classpath元素

都用於收集系列文件和目錄集,這兩個標籤定義的內容成爲Path-like Structures(似目錄結構)

pathelement:用於指定一個或多個目錄

dirset:採用模式字符串的方式指定系列目錄

fileset:採用模式字符串的方式指定系列文件

filelist:採用直接列出系列文件名的防止指定系列文件

path:指定一個或多個目錄(或jar文件),多個目錄或JAR文件用英文冒號或分好分開

location:指定一個目錄和JAR文件

 

<pathelement path="/path/to/file.jar;/path/to/class1;/path/to/class2"> //定義多文件對應的目錄集
<pathelement location="lib/helper.jar"> //定義由helper.jar單個文件對應的目錄
 
如果指定多個目錄集,則應該使用<dirset>元素,需要一個dir屬性標註目錄集的跟路徑;還可以使用include和exclude自標籤指定包含和不包含那些目錄
<dirset dir="build">
	<include name="apps/**/classes" /> //刪除包含apps目錄下所有classes目錄
	<exclude name="apps/**/*Test*" /> //排除目錄名中有Test的目錄
</dirset>
 
如果希望配置多個文件,可以使用fileset或者filelist元素
<filelist id="docfiles" dir="${doc.src}"> //指定文件集裏多個文件所在的基準路徑,必需
	<file name="foo.xml"> //支持使用多個file元素,相當於files
	<file name="bar.xml">
</filelist>
<filelist id="docfiles" dir="${doc.src}" files="foo.xml, bar.xml" /> //使用files多個文件名列表,使用逗號或空白隔開
 
<fileset dir="src" casesensitive="yes"> //dir指定文件基準路徑,casesensitive:指定是否區分大小寫
	<include name="**/*.java" />
	<exclude name="**/*Test*" />
</fileset>
 

核心Task

javac:用於編譯一個或多個java源文件,通常需要srcdir和destdir兩個屬性,用於指定Java源文件和編譯後class文件的位置

java:用於運行某個Java類,通常需要classname屬性,指定運行哪個類

jar:用於生成jar包,通常需要指定destfile屬性,用於指定所創建jar包的文件名

sql:用於執行一條或多條sql語句,通常需要dirver、url、userid、password等屬性

echo:輸出某個字符串

exec:執行操作系統的特定命令,需要exeutable屬性,用於指定想執行的命令

copy:複製文件或路徑

delete:刪除文件或路徑

mkdir:用於創建文件夾

move:用於移動文件和路徑

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章