ANT不完全总结,包含各种命令,ant例子等,转自:http://lavasoft.blog.51cto.com/62575/87306
生活随笔
收集整理的這篇文章主要介紹了
ANT不完全总结,包含各种命令,ant例子等,转自:http://lavasoft.blog.51cto.com/62575/87306
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
ANT不完全總結(jié)
好久沒有用Ant了,最近讓MyEclipse、JBuilder2008逼的重回Ant上了。手生了,寫了一個(gè)腳本后,重新總結(jié)下。參考了官方的文檔和網(wǎng)上一些資料。
一、ANT的介紹
Ant的全名是"Another Neat Tool",是由James Duncan Davidson在Make工具無法滿足他的需求下所撰寫出來的構(gòu)建(build)工具。
Ant用Java編寫,服務(wù)于Java。
二、ANT的安裝配置
1、獲取ANT
[url]http://ant.apache.org/[/url]
2、安裝ANT
set ANT_HOME=c:\ant
set JAVA_HOME=c:\jdk-1.5.0.05
set PATH=%PATH%;%ANT_HOME%\bin
三、使用ANT
Ant的build腳本是一個(gè)XML文件,稱為Buildfile,每個(gè)Buildfile包含一個(gè)project和若干個(gè)target元素,每個(gè)target又可以包含若干個(gè)task元素,每個(gè)task元素可以有一個(gè)id屬性。當(dāng)然id屬性必須在整個(gè)文檔中是唯一的。結(jié)構(gòu)如下:
<project/>
<target/>
<task/>
<task/>
</target>
<target>
<task/>
</target>
</project>?
1、project
有三個(gè)屬性,這些屬性都不是必須的。比如:
<project name="testwebant" basedir="." default="all">
屬性說明如下:
name:指定項(xiàng)目的名字。
basedir:指定項(xiàng)目根路徑,用于計(jì)算所有其他路徑的基路徑。該屬性可以被basedir property覆蓋。當(dāng)覆蓋時(shí),該屬性被忽略。如果屬性和basedir property都沒有設(shè)定,就使用buildfile文件的父目錄。
default:指定當(dāng)沒有指定執(zhí)行目標(biāo)時(shí),所要執(zhí)行的目標(biāo)。
2、target
一個(gè)target可以依賴于其他的target。例如,你可能會(huì)有一個(gè)target用于編譯程序,一個(gè)target用于生成可執(zhí)行文件。你在生成可執(zhí)行文件之前必須先編譯通過,所以生成可執(zhí)行文件的target依賴于編譯target。Ant會(huì)處理這種依賴關(guān)系。
Ant會(huì)依照depends屬性中target出現(xiàn)的順序(從左到右)依次執(zhí)行每個(gè)target。然而,要記住的是只要某個(gè)target依賴于一個(gè)target,后者就會(huì)被先執(zhí)行。
<target name="A"/>
<target name="B" depends="A"/>
<target name="C" depends="B"/>
<target name="D" depends="C,B,A"/>
假定我們要執(zhí)行target D。從它的依賴屬性來看,你可能認(rèn)為先執(zhí)行C,然后B,最后A被執(zhí)行。錯(cuò)了,C依賴于B,B依賴于A,所以先執(zhí)行A,然后B,然后C,最后D被執(zhí)行。
一個(gè)target只能被執(zhí)行一次,即時(shí)有多個(gè)target依賴于它。
如果(或如果不)某些屬性被設(shè)定,才執(zhí)行某個(gè)target。這樣,允許根據(jù)系統(tǒng)的狀態(tài)(java version, OS, 命令行屬性定義等等)來更好地控制build的過程。要想讓一個(gè)target這樣做,你就應(yīng)該在target元素中,加入if(或unless)屬性,帶上target因該有所判斷的屬性。例如:
<target name="build-module-A" if="module-A-present"/>
<target name="build-own-fake-module-A" unless="module-A-present"/>
如果沒有if或unless屬性,target總會(huì)被執(zhí)行。
可選的description屬性可用來提供關(guān)于target的一行描述,這些描述可由-projecthelp命令行選項(xiàng)輸出。
target有下面的屬性,僅僅name屬性是必須的。:
name: target的名字。
depends: 用逗號(hào)分隔的target的名字列表,也就是依賴表。
if 執(zhí)行target所需要設(shè)定的屬性名。
unless 執(zhí)行target需要清除設(shè)定的屬性名。
description 關(guān)于target功能的簡(jiǎn)短描述。
3、task
task不是一個(gè)Buildfile的元素,是一個(gè)泛稱。
一個(gè)task是一段可執(zhí)行的代碼。
一個(gè)task可以有多個(gè)屬性(如果你愿意的話,可以將其稱之為變量)。屬性只可能包含對(duì)property的引用。這些引用會(huì)在task執(zhí)行前被解析。
下面是Task的一般構(gòu)造形式:
<name attribute1="value1" attribute2="value2" ... />
這里name是task的名字,attributeN是屬性名,valueN是屬性值。
有一套內(nèi)置的(built-in)task,以及一些可選task,但你也可以編寫自己的task。
所有的task都有一個(gè)task名字屬性。Ant用屬性值來產(chǎn)生日志信息。
可以給task賦一個(gè)id屬性:
<taskname id="taskID" ... />
這里taskname是task的名字,而taskID是這個(gè)task的唯一標(biāo)識(shí)符。通過這個(gè)標(biāo)識(shí)符,你可以在腳本中引用相應(yīng)的task。
例如,在腳本中你可以這樣:
<script ... >
task1.setFoo("bar");
</script>
設(shè)定某個(gè)task實(shí)例的foo屬性。
在另一個(gè)task中(用java編寫),你可以利用下面的語句存取相應(yīng)的實(shí)例。
project.getReference("task1").
注意1:如果task1還沒有運(yùn)行,就不會(huì)被生效(例如:不設(shè)定屬性),如果你在隨后配置它,你所作的一切都會(huì)被覆蓋。
注意2:未來的Ant版本可能不會(huì)兼容這里所提的屬性,因?yàn)楹苡锌赡芨緵]有task實(shí)例,只有proxies。
4、Properties
一個(gè)project可以有很多的properties。可以在buildfile中用property task來設(shè)定,或在Ant之外設(shè)定。如果是在外部設(shè)定的,則可以通過下面的方式來引入properties配置文件。
<property file="testwebant.properties"/>
一個(gè)property有一個(gè)名字和一個(gè)值。property可用于task的屬性值。這是通過將屬性名放在"${"和"}"之間并放在屬性值的位置來實(shí)現(xiàn)的。例如如果有一個(gè)property builddir的值是"build",這個(gè)property就可用于屬性值:${builddir}/classes。這個(gè)值就可被解析為build/classes。
Ant內(nèi)置屬性
如果你使用了<property> task 定義了所有的系統(tǒng)屬性,Ant允許你使用這些屬性。例如,${os.name}對(duì)應(yīng)操作系統(tǒng)的名字。
要想得到系統(tǒng)屬性的列表可參考the Javadoc of System.getProperties。
除了Java的系統(tǒng)屬性,Ant還定義了一些自己的內(nèi)置屬性:
basedir project基目錄的絕對(duì)路徑 (與<project>的basedir屬性一樣)。
ant.file buildfile的絕對(duì)路徑。
ant.version Ant的版本。
ant.project.name 當(dāng)前執(zhí)行的project的名字;由<project>的name屬性設(shè)定.
ant.java.version Ant檢測(cè)到的JVM的版本; 目前的值有"1.1", "1.2", "1.3" and "1.4".
例子
<project name="MyProject" default="dist" basedir=".">
<!-- set global properties for this build -->
<property name="src" value="."/>
<property name="build" value="build"/>
<property name="dist" value="dist"/>
<target name="init">
<!-- Create the time stamp -->
<tstamp/>
<!-- Create the build directory structure used by compile -->
<mkdir dir="${build}"/>
</target>
<target name="compile" depends="init">
<!-- Compile the java code from ${src} into ${build} -->
<javac srcdir="${src}" destdir="${build}"/>
</target>
<target name="dist" depends="compile">
<!-- Create the distribution directory -->
<mkdir dir="${dist}/lib"/>
<!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file -->
<jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}"/>
</target>
<target name="clean">
<!-- Delete the ${build} and ${dist} directory trees -->
<delete dir="${build}"/>
<delete dir="${dist}"/>
</target>
</project>
4、PATH和CLASSPATH
你可以用":"和";"作為分隔符,指定類似PATH和CLASSPATH的引用。Ant會(huì)把分隔符轉(zhuǎn)換為當(dāng)前系統(tǒng)所用的分隔符。
當(dāng)需要指定類似路徑的值時(shí),可以使用嵌套元素。一般的形式是
<classpath>
<pathelement path="${classpath}"/>
<pathelement location="lib/helper.jar"/>
</classpath>
location屬性指定了相對(duì)于project基目錄的一個(gè)文件和目錄,而path屬性接受逗號(hào)或分號(hào)分隔的一個(gè)位置列表。path屬性一般用作預(yù)定義的路徑--其他情況下,應(yīng)該用多個(gè)location屬性。
為簡(jiǎn)潔起見,classpath標(biāo)簽支持自己的path和location屬性。所以:
<classpath>
<pathelement path="${classpath}"/>
</classpath>
可以被簡(jiǎn)寫作:
<classpath path="${classpath}"/>
也可通過<fileset>元素指定路徑。構(gòu)成一個(gè)fileset的多個(gè)文件加入path-like structure的順序是未定的。
<classpath>
<pathelement path="${classpath}"/>
<fileset dir="lib">
<include name="**/*.jar"/>
</fileset>
<pathelement location="classes"/>
</classpath>
上面的例子構(gòu)造了一個(gè)路徑值包括:${classpath}的路徑,跟著lib目錄下的所有jar文件,接著是classes目錄。
如果你想在多個(gè)task中使用相同的path-like structure,你可以用<path>元素定義他們(與target同級(jí)),然后通過id屬性引用--參考Referencs例子。
path-like structure可能包括對(duì)另一個(gè)path-like structurede的引用(通過嵌套<path>元素):
<path id="base.path">
<pathelement path="${classpath}"/>
<fileset dir="lib">
<include name="**/*.jar"/>
</fileset>
<pathelement location="classes"/>
</path>
<path id="tests.path">
<path refid="base.path"/>
<pathelement location="testclasses"/>
</path>
前面所提的關(guān)于<classpath>的簡(jiǎn)潔寫法對(duì)于<path>也是有效的,如:
<path id="tests.path">
<path refid="base.path"/>
<pathelement location="testclasses"/>
</path>
可寫成:
<path id="base.path" path="${classpath}"/>
5、命令行變量
有些task可接受參數(shù),并將其傳遞給另一個(gè)進(jìn)程。為了能在變量中包含空格字符,可使用嵌套的arg元素。
Attribute Description Required
value 一個(gè)命令行變量;可包含空格字符。 只能用一個(gè)
line 空格分隔的命令行變量列表。
file 作為命令行變量的文件名;會(huì)被文件的絕對(duì)名替代。
path 一個(gè)作為單個(gè)命令行變量的path-like的字符串;或作為分隔符,Ant會(huì)將其轉(zhuǎn)變?yōu)樘囟ㄆ脚_(tái)的分隔符。
例子
<arg value="-l -a"/>
是一個(gè)含有空格的單個(gè)的命令行變量。
<arg line="-l -a"/>
是兩個(gè)空格分隔的命令行變量。
<arg path="/dir;/dir2:\dir3"/>
是一個(gè)命令行變量,其值在DOS系統(tǒng)上為\dir;\dir2;\dir3;在Unix系統(tǒng)上為/dir:/dir2:/dir3 。
6、ID引用
buildfile元素的id屬性可用來引用這些元素。如果你需要一遍遍的復(fù)制相同的XML代碼塊,這一屬性就很有用--如多次使用<classpath>結(jié)構(gòu)。
下面的例子:
<project ... >
<target ... >???
<rmic ...>?????
<classpath>???????
<pathelement location="lib/"/>???????
<pathelement path="${java.class.path}/"/>???????
<pathelement path="${additional.path}"/>?????
</classpath>???
</rmic>
</target>
<target ... >
<javac ...>
<classpath>
<pathelement location="lib/"/>
<pathelement path="${java.class.path}/"/>
<pathelement path="${additional.path}"/>
</classpath>
</javac>
</target>
</project>
可以寫成如下形式:
<project ... >
<path id="project.class.path">
<pathelement location="lib/"/>
<pathelement path="${java.class.path}/"/>??
<pathelement path="${additional.path}"/>
</path>
<target ... >
<rmic ...>
<classpath refid="project.class.path"/>
</rmic>
</target>
<target ... >
<javac ...>
<classpath refid="project.class.path"/>
</javac>
</target>
</project>
所有使用PatternSets, FileSets 或 path-like structures嵌套元素的task也接受這種類型的引用。
四、Ant內(nèi)置的常用任務(wù)
Ant中內(nèi)置的任務(wù)很多很多,要想記住每個(gè)任務(wù)幾乎異想天開,對(duì)于開發(fā)者來說,我們僅僅需要知道一些常見的任務(wù)使用即可。對(duì)于不常用的任務(wù),可以在使用的時(shí)候直接到[url]http://ant.apache.org/manual/index.html[/url]里去查看使用手冊(cè)。
Ant中的任務(wù)可以為3類。
核心任務(wù)。核心任務(wù)是Ant自帶的任務(wù)。
可選任務(wù)。可選任務(wù)實(shí)來自第三方的任務(wù),因此需要一個(gè)附加的JAR文件。
用戶自定義的任務(wù)。用戶自定義的任務(wù)實(shí)用戶自己開發(fā)的任務(wù)。
下面是Ant中常用的一些任務(wù)用法的簡(jiǎn)單總結(jié):
1、<mkdir>
創(chuàng)建一個(gè)目錄,如果他的父目錄不存在,也會(huì)被同時(shí)創(chuàng)建。它有一個(gè)屬性dir用來指定所創(chuàng)建的目錄名,其代碼如下:
<mkdir dir="build/classes"/>
如果build不存在,也會(huì)被同時(shí)創(chuàng)建。
2、<delete>
刪除文件或者目錄, 如:
<delete dir="${testwebant.output.dir}"/>
屬性如下:
file表示要?jiǎng)h除的文件。
dir表示要?jiǎng)h除的目錄。
includeEmptyDirs 表示指定是否要?jiǎng)h除空目錄,默認(rèn)值是刪除。
failonerror 表示指定當(dāng)碰到錯(cuò)誤是否停止,默認(rèn)值是自動(dòng)停止。
verbose 表示指定是否列出所刪除的文件,默認(rèn)值為不列出。
(1). 刪除一個(gè)文件
<delete file="/lib/ant.jar"/>
(2). 刪除指定目錄及其子目錄
<delete dir="lib"/>
(3). 刪除指定的一組文件
<delete>
<fileset dir="." includes="**/*.bak"/>
</delete>
(4). 刪除指定目錄及其子目錄,包括他自己
<delete includeEmptyDirs="true">
<fileset dir="build"/>
</delete>
3、<jar>
該標(biāo)簽用來生成一個(gè)jar文件,其屬性如下。
destfile 表示jar文件名。
basedir? 表示被歸檔的文件夾。
includes 表示被歸檔的文件模式。
exchudes 表示被排除的文件模式。
例如:
<jar destfile="helloworld.jar" basedir="build/classes">
<manifest>
<attribute name="Main-class" value="HelloWorld"/>
</manifest>
</jar>
4、<javac>
該標(biāo)簽用于編譯一個(gè)或一組java文件,其屬性如下。
srcdir 表示源文件的目錄。
destdir 表示class文件的輸出目錄。
include 表示被編譯的文件的模式。
excludes 表示被排除的文件的模式。
classpath 表示所使用的類路徑。
debug 表示包含的調(diào)試信息。
optimize 表示是否使用優(yōu)化。
verbose 表示提供詳細(xì)的輸出信息。
fileonerror 表示當(dāng)碰到錯(cuò)誤就自動(dòng)停止。
5、<java>
該標(biāo)簽用來執(zhí)行編譯生成的.class文件,其屬性如下。
classname 表示將執(zhí)行的類名。
jar 表示包含該類的JAR文件名。
classpath 所表示用到的類路徑。
fork 表示在一個(gè)新的虛擬機(jī)中運(yùn)行該類。
failonerror 表示當(dāng)出現(xiàn)錯(cuò)誤時(shí)自動(dòng)停止。
output 表示輸出文件。
append 表示追加或者覆蓋默認(rèn)文件。
例如:
<java classname="HelloWorld">
<classpath>
<pathelement path="build/classes"/>
</classpath>
</java>
6、<copy>
該標(biāo)簽用于文件或文件集的拷貝,其屬性如下。
file 表示源文件。
tofile 表示目標(biāo)文件。
todir 表示目標(biāo)目錄。
overwrite 表示指定是否覆蓋目標(biāo)文件,默認(rèn)值是不覆蓋。
includeEmptyDirs 表示制定是否拷貝空目錄,默認(rèn)值為拷貝。
failonerror 表示指定如目標(biāo)沒有發(fā)現(xiàn)是否自動(dòng)停止,默認(rèn)值是停止。
verbose 表示制定是否顯示詳細(xì)信息,默認(rèn)值不顯示。
(1). 拷貝單個(gè)的文件:
<copy file="myfile.txt" tofile="mycopy.txt"/>
(2). 拷貝單個(gè)的文件到指定目錄下
<copy file="myfile.txt" todir="../some/other/dir"/>
(3). 拷貝一個(gè)目錄到另外一個(gè)目錄下
<copy todir="../new/dir">
<fileset dir="src_dir"/>
</copy>
(4). 拷貝一批文件到指定目錄下
<copy todir="../dest/dir">
<fileset dir="src_dir">
<exclude name="**/*.java"/>
</fileset>
</copy>
<copy todir="../dest/dir">
<fileset dir="src_dir" excludes="**/*.java"/>
</copy>
(5). 拷貝一批文件到指定目錄下,將文件名后增加.bak后綴
<copy todir="../backup/dir">
<fileset dir="src_dir"/>
<mapper type="glob" from="*" to="*.bak"/>
</copy>
(6). 拷貝一組文件到指定目錄下,替換其中指定<標(biāo)簽>內(nèi)容
<copy todir="../backup/dir">
<fileset dir="src_dir"/>
<filterset>
<filter token="TITLE" value="Foo Bar"/>
</filterset>
</copy>
7、<move>
移動(dòng)或重命名一個(gè)(組)文件、目錄
(1). 移動(dòng)或重命名一個(gè)文件
<move file="file.orig" tofile="file.moved"/>
(2). 移動(dòng)或重命名一個(gè)文件到另一個(gè)文件夾下面
<move file="file.orig" todir="dir/to/move/to"/>
(3). 將一個(gè)目錄移到另外一個(gè)目錄下
<move todir="new/dir/to/move/to">
<fileset dir="src/dir"/>
</move>
(4). 將一組文件移動(dòng)到另外的目錄下
<move todir="some/new/dir">
<fileset dir="my/src/dir">
<include name="**/*.jar"/>
<exclude name="**/ant.jar"/>
</fileset>
</move>
(5). 移動(dòng)文件過程中增加.bak后綴
<move todir="my/src/dir">
<fileset dir="my/src/dir">
<exclude name="**/*.bak"/>
</fileset>
<mapper type="glob" from="*" to="*.bak"/>
</move>
五、Ant的數(shù)據(jù)類型
在構(gòu)建文件中為了標(biāo)識(shí)文件或文件組,經(jīng)常需要使用數(shù)據(jù)類型。數(shù)據(jù)類型包含在org.apache.tool.ant.types包中。下面介紹構(gòu)建文件中一些常用的數(shù)據(jù)類型。
1、argument 類型
由Ant構(gòu)建文件調(diào)用的程序,可以通過<arg>元素向其傳遞命令行參數(shù),如apply,exec和java任務(wù)均可接受嵌套<arg>元素,可以為各自的過程調(diào)用指定參數(shù)。
以下是<arg>的所有屬性:
values 是一個(gè)命令參數(shù)。如果參數(shù)種有空格,但又想將它作為單獨(dú)一個(gè)值,則使用此屬性。
file 表示一個(gè)參數(shù)的文件名。在構(gòu)建文件中,此文件名相對(duì)于當(dāng)前的工作目錄。
line 表示用空格分隔的多個(gè)參數(shù)列表。
path 表示路徑。
2、ervironment 類型
由Ant構(gòu)建文件調(diào)用的外部命令或程序,<env>元素制定了哪些環(huán)境變量要傳遞給正在執(zhí)行的系統(tǒng)命令,
<env>元素可以接受以下屬性:
file 表示環(huán)境變量值得文件名。此文件名要被轉(zhuǎn)換位一個(gè)絕對(duì)路徑。
path 表示環(huán)境變量的路徑。Ant會(huì)將它轉(zhuǎn)換為一個(gè)本地約定。
value 表示環(huán)境變量的一個(gè)直接變量。
key 表示環(huán)境變量名。
注意? file path 或 value只能取一個(gè)。
3、filelist類型
filelist是一個(gè)支持命名的文件列表的數(shù)據(jù)類型,包含在一個(gè)filelist類型中的文件不一定是存在的文件。
以下是其所有的屬性:
dir是用于計(jì)算絕對(duì)文件名的目錄。
files 是用逗號(hào)分隔的文件名列表。
refid 是對(duì)某處定義的一個(gè)<filelist>的引用。
注意? dir 和 files 都是必要的,除非指定了refid(這種情況下,dir和files都不允許使用)。
4、fileset類型
fileset數(shù)據(jù)類型定義了一組文件,是一個(gè)文件的集合,并通常表示為<fileset>元素。不過,許多ant任務(wù)構(gòu)建成了隱式的fileset,這說明他們支持所有的fileset屬性和嵌套元素。
以下為fileset 的屬性列表:
dir 表示fileset 的基目錄。
casesensitive 的值如果為false,那么匹配文件名時(shí),fileset不是區(qū)分大小寫的,其默認(rèn)值為true.
defaultexcludes 用來確定是否使用默認(rèn)的排除模式,默認(rèn)為true。
excludes 是用逗號(hào)分隔的需要派出的文件模式列表。
excludesfile 表示每行包含一個(gè)排除模式的文件的文件名。
includes 是用逗號(hào)分隔的,需要包含的文件模式列表。
includesfile 表示每行包括一個(gè)包含模式的文件名。
5、patternset類型
fileset是文件的集合,而patternset是對(duì)模式的集合,他們是緊密相關(guān)的概念。
<patternset>支持4個(gè)屬性:
includes excludex includexfile 和 excludesfile,與fileset相同。
<patternset>還允許以下嵌套元素:include,exclude,includefile 和 excludesfile。
6、filterset類型
filterset定義了過濾器集合,這些過濾器將在文件移動(dòng)或復(fù)制時(shí)完成文件的文本替換。
主要屬性如下:
begintoken 表示嵌套過濾器所搜索的記號(hào),這是標(biāo)識(shí)其開始的字符串。
endtoken 表示嵌套過濾器所搜索的記號(hào)這是標(biāo)識(shí)其結(jié)束的字符串。
id 是過濾器的唯一標(biāo)志符。
refid 是對(duì)構(gòu)建文件中某處定義一個(gè)過濾器的引用。
7、path類型
path元素用來表示一個(gè)類路徑,不過它還可以用于表示其他的路徑。在用作這個(gè)屬性時(shí),路經(jīng)中的各項(xiàng)用分號(hào)或冒號(hào)隔開。在構(gòu)建的時(shí)候,此分隔符將代替當(dāng)前平臺(tái)中所有的路徑分隔符。
path擁有的屬性如下:
location 表示一個(gè)文件或目錄。Ant在內(nèi)部將此擴(kuò)展為一個(gè)絕對(duì)路徑。
refid 是對(duì)當(dāng)前構(gòu)建文件中某處定義的一個(gè)path的引用。
path 表示一個(gè)文件或路徑名列表。
8、path與classpath類型
參看第三部分中的介紹。
<classpath id="project.class.path">
<pathelement path="${classpath}"/>
<fileset dir="lib">
<include name="**/*.jar"/>
</fileset>
<pathelement location="classes"/>
<dirset dir="build">
<include name="apps/**/classes"/>
<exclude name="apps/**/*Test*"/>
</dirset>
<filelist refid="third-party_jars"/>
</classpath>
<path id="classpath">
<pathelement location="${classes}"/>
<fileset dir="${lib}" includes="**/*.jar"/>
<fileset dir="${devlib}" includes="**/*.jar"/>
</path>
9、mapper類型
mapper類型定義了一組輸入文件和一組輸出文件間的關(guān)系。
其屬性如下。
classname 表示實(shí)現(xiàn)mapper類的類名。當(dāng)內(nèi)置mapper不滿足要求時(shí),用于創(chuàng)建定制mapper.
classpath 表示查找一個(gè)定制mapper時(shí)所用的類型路徑。
classpathref 是對(duì)某處定義的一個(gè)類路徑的引用。
from 屬性的含義取決于所用的mapper.
to 屬性的含義取決于所用的mapper.
type 屬性的取值為identity,flatten glob merge? regexp? 其中之一,它定義了要是用的內(nèi)置mapper的類型。
10、echo
該任務(wù)的作用是根據(jù)日志或監(jiān)控器的級(jí)別輸出信息。
它包括message、file、append和level四個(gè)屬性,
舉例如下:
<echo message="Hello,Amigo" file="logs/system.log" append="true">
六、下面是一個(gè)Java工程的build文件
<?xml version="1.0" encoding="GBK"?>
<project name="javaApp" basedir="." default="init">
<property name="project.name" value="javaApp"/>
<property name="src" value="src"/>
<property name="lib" value="lib"/>
<property name="classes" value="classes"/>
<property name="dist" value="dist"/>
<property name="doc" value="doc"/>
<property name="javadoc" value="${doc}/javadoc"/>
<path id="applib">
<pathelement location="${classes}"/>
<fileset dir="${lib}" includes="**/*.jar"/>
</path>
<target name="init">
<mkdir dir="${classes}"/>
<mkdir dir="${dist}"/>
<mkdir dir="${javadoc}"/>
</target>
<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${classes}" debug="false" fork="true">
<classpath refid="applib"/>
</javac>
</target>
<target name="jar" depends="compile">
<jar destfile="${dist}/javaApp.jar" basedir="${classes}"/>
</target>
<target name="clean">
<delete dir="${classes}"/>
<delete dir="${dist}"/>
<delete dir="${javadoc}"/>
</target>
<target name="javadoc" depends="compile">
<delete dir="${javadoc}"/>
<mkdir dir="${javadoc}"/>
<javadoc destdir="${javadoc}"
author="true"
use="true"
windowtitle="${project.name} API">
<packageset dir="${src}" defaultexcludes="yes"/>
<doctitle><![CDATA[<h1>${project.name}</h1>]]></doctitle>
<bottom><![CDATA[<i>Document by Leizhimin 2008.</i>]]></bottom>
</javadoc>
</target>
<target name="help">
<exec executable="cmd">
<arg value="/c"/>
<arg value="ant.bat"/>
<arg value="-p"/>
</exec>
</target>
</project>
總結(jié)
以上是生活随笔為你收集整理的ANT不完全总结,包含各种命令,ant例子等,转自:http://lavasoft.blog.51cto.com/62575/87306的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 金融界的三架马车是什么
- 下一篇: 社保3险和5险的区别