ant使用簡(jiǎn)介
ant 是apache 工程的一個(gè)子工程,是一個(gè)基于java的build工具。ant類(lèi)似于make工具,但沒(méi)有傳統的make工具的缺點(diǎn)。傳統的make往往只能限制在某一平臺上使用,ant本身用java類(lèi)實(shí)現,要構建的工程的配置文件用xml格式描述,可以很方便實(shí)現多平臺編譯,非常適合build大型工程。
1.安裝配置ant:ant 可以從
http://ant.apache.org下載,目前最新版本為1.5.2。下載完畢后直接解壓縮,目錄如下:
ant
+-- bin // contains launcher scripts
|
+-- lib // contains Ant jars plus necessary dependencies
|
+-- docs // contains documentation
| +-- ant2 // a brief description of ant2 requirements
| |
| +-- images // various logos for html documentation
| |
| +-- manual // Ant documentation (a must read )
|
+-- etc
需要設置的環(huán)境變量:
ANT_HOME:ant的安裝目錄
JAVA_HOME:jdk的安裝目錄
PATH:把%ANT_HOME%\bin目錄加到path變量,以便于從命令行下直接運行ant
假定ant裝在c:\ant jdk裝d:\j2sdk1.4.0
則在命令行下執行以下命令:
set ANT_HOME=c:\ant
set JAVA_HOME=D:\j2sdk1.4.0
set PATH=%PATH%;c:\ant\bin
在win2000命令提示符下工作時(shí),每次都必須進(jìn)行上面的設置,退出命令提示符后,這些變量的值又會(huì )恢復成原來(lái)的樣子。為了避免這些麻煩,可以在 控制面板\系統\高級\環(huán)境變量 中設置。
上述設置完成后,就可以使用ant了。
2.建立工程描述文件build.xml用ant編譯規模較大的工程非常方便,每個(gè)工程都對應一個(gè)build.xml文件,這個(gè)文件包含與這個(gè)工程有關(guān)的路徑信息和任務(wù)。下面是一個(gè)build.xml的例子:
<project name="logon" basedir="." default="dist">
<property name="dist.name" value="struts_demo"/>
<property name="src" location="src"/>
<property name="build" location="WEB-INF/classes"/>
<property name="dist" location="D:/tomcat/webapps/dist"/>
<!-- Build working classpath -->
<path id="project.class.path">
<pathelement path ="WEB-INF/lib/struts.jar"/>
<pathelement path ="WEB-INF/classes"/>
<pathelement path ="${classpath}"/>
</path>
<target name="init">
<tstamp/>
<!-- Create the build directory structure used by compile -->
<delete dir="${dist}"/>
</target>
<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${build}">
<classpath refid="project.class.path"/>
</javac>
</target>
<!-- Build binary distribution -->
<target name="dist" depends="compile"
description="Create binary distribution">
<mkdir dir="${dist}"/>
<war destfile="${dist}/${dist.name}.war"
webxml="WEB-INF/web.xml">
<lib dir="WEB-INF/lib"/>
<classes dir="WEB-INF/classes"/>
<fileset dir="${basedir}"/>
</war>
</target>
</project>
要構建的工程目錄如下:
struts_demo
+--jsp
|
+--src
|
+--WEB-INF
| +--classes
| |
| +--lib
| |
| +--web.xml
|
+--build.xml
每個(gè)build.xml文件都包含一個(gè)project和至少一個(gè)target。target包含任務(wù)元素,任務(wù)是一段可執行代碼,每個(gè)任務(wù)元素都有一個(gè)id屬性,以便于在文件中引用。ant有內置任務(wù)集可供使用,如上面文件中用到的property、javac和war,分別完成設置屬性、編譯和打包任務(wù)。當然如果需要的話(huà)也可以寫(xiě)自己的任務(wù)。
build.xml的根元素是progject,它有三個(gè)屬性name default basedir,其中default是必需的。name指定工程的名字,basedir表示工程的基路徑,設置為"."表示build.xml所在的路徑。default表示默認的target,運行ant時(shí)如果不指定target,則用default指定的target.
property任務(wù)用來(lái)設置屬性,一個(gè)工程可以設置很多屬性,屬性有名字和值,屬性設置后可以在后面引用。
<property name="dist.name" value="struts_demo"/>設置一個(gè)名字為dist.name的屬性,其值為struts_demo,后面使用時(shí)用${dist.name}引用,表示字符串struts_demo.
<property name="src" location="src"/>設置一個(gè)名字為src的屬性,它的值是一個(gè)路徑,用location設置。如果location內容以/或\或D:\ C:\之類(lèi)開(kāi)始,表示絕對路徑,否則表示相對路徑,相對于project中設置的basedir.
使用path或classpath可以設置類(lèi)的路徑,后面引用時(shí)用id設置的值
構建工程最常用的ant內置任務(wù):
mkdir: 創(chuàng )建目錄,dir=要創(chuàng )建的目錄
delete: 刪除文件或文件夾 dir=要刪除的文件或文件夾
javac: 編譯java源文件,java源文件放在srcdir指定的文件夾中,生成的.class文件按照 package語(yǔ)句組織目錄,存放在destdir指定的文件夾中。要注意源文件的目錄組織要與package語(yǔ)句相一致
war: 為web應用程序打包,destfile指定打包后生成的文件名,webxml指定所用的web.xml文件。<fileset dir="${basedir}"/>將basedir目錄下所有的文件也放在包中
上面的build.xml例子中,target中的屬性depends表示在執行本target之前必須要做的target,
例如dist 的depends=compile,意思是在用dist打包之前必須先用compile編譯。這樣當執行dist時(shí)首先執行compile
3.運行ant:使用ant.bat可以直接運行ant,如果不帶任何參數,ant會(huì )在當前路徑下搜索build.xml文件,如果找到,就運行project的default指定的target.也可以帶參數來(lái)選擇build.xml文件和要運行的target
對于上面的例子,假定build.xml所在的目錄為D:\struts_demo\ ,則下面三種執行方式效果是一樣的:
1. cd d:\struts_demo
ant
2. ant -buildfile d:\struts_demo\build.xml
3. ant -buildfile d:\struts_demo\build.xml dist
如果執行ant -buildfile d:\struts_demo\build.xml compile,則執行compile target
有關(guān)ant使用和build.xml文件內容,在ant的manual中有詳細的描述。