ant 是apache 工程的一個子工程,是一個基于java的build工具。ant類似于make工具,但沒有傳統的make工具的缺點。傳統的make往往只能限制在某一平臺上使用,ant本身用java類實現,要構建的工程的配置文件用xml格式描述,可以很方便實現多平臺編譯,非常適合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
需要設置的環境變量:
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命令提示符下工作時,每次都必須進行上面的設置,退出命令提示符后,這些變量的值又會恢復成原來的樣子。為了避免這些麻煩,可以在 控制面板"系統"高級"環境變量 中設置。
上述設置完成后,就可以使用ant了。
2.建立工程描述文件build.xml
用ant編譯規模較大的工程非常方便,每個工程都對應一個build.xml文件,這個文件包含與這個工程有關的路徑信息和任務。下面是一個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
每個build.xml文件都包含一個project和至少一個target。target包含任務元素,任務是一段可執行代碼,每個任務元素都有一個id屬性,以便于在文件中引用。ant有內置任務集可供使用,如上面文件中用到的property、javac和war,分別完成設置屬性、編譯和打包任務。當然如果需要的話也可以寫自己的任務。
build.xml 的根元素是progject,它有三個屬性name default basedir,其中default是必需的。name指定工程的名 字,basedir表示工程的基路徑,設置為"."表示build.xml所在的路徑。default表示默認的target,運行ant時如果不指定 target,則用default指定的target.
property任務用來設置屬性,一個工程可以設置很多屬性,屬性有名字和值,屬性設置后可以在后面引用。
<property name="dist.name" value="struts_demo"/>設置一個名字為dist.name的屬性,其值為struts_demo,后面使用時用${dist.name}引用,表示字符串struts_demo.
<property name="src" location="src"/& gt;設置一個名字為src的屬性,它的值是一個路徑,用location設置。如果location內容以/或"或D:" C:"之類開始,表示絕對路 徑,否則表示相對路徑,相對于project中設置的basedir.
使用path或classpath可以設置類的路徑,后面引用時用id設置的值
構建工程最常用的ant內置任務:
mkdir: 創建目錄,dir=要創建的目錄
delete: 刪除文件或文件夾 dir=要刪除的文件或文件夾
javac: 編譯java源文件,java源文件放在srcdir指定的文件夾中,生成的.class文件按照 package語句組織目錄,存放在destdir指定的文件夾中。要注意源文件的目錄組織要與package語句相一致
war: 為web應用程序打包,destfile指定打包后生成的文件名,webxml指定所用的web.xml文件。<fileset dir="${basedir}"/>將basedir目錄下所有的文件也放在包中
上面的build.xml例子中,target中的屬性depends表示在執行本target之前必須要做的target,
例如dist 的depends=compile,意思是在用dist打包之前必須先用compile編譯。這樣當執行dist時首先執行compile
3.運行ant:
使用ant.bat可以直接運行ant,如果不帶任何參數,ant會在當前路徑下搜索build.xml文件,如果找到,就運行project的default指定的target.也可以帶參數來選擇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
有關ant使用和build.xml文件內容,在ant的manual中有詳細的描述。
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
需要設置的環境變量:
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命令提示符下工作時,每次都必須進行上面的設置,退出命令提示符后,這些變量的值又會恢復成原來的樣子。為了避免這些麻煩,可以在 控制面板"系統"高級"環境變量 中設置。
上述設置完成后,就可以使用ant了。
2.建立工程描述文件build.xml
用ant編譯規模較大的工程非常方便,每個工程都對應一個build.xml文件,這個文件包含與這個工程有關的路徑信息和任務。下面是一個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
每個build.xml文件都包含一個project和至少一個target。target包含任務元素,任務是一段可執行代碼,每個任務元素都有一個id屬性,以便于在文件中引用。ant有內置任務集可供使用,如上面文件中用到的property、javac和war,分別完成設置屬性、編譯和打包任務。當然如果需要的話也可以寫自己的任務。
build.xml 的根元素是progject,它有三個屬性name default basedir,其中default是必需的。name指定工程的名 字,basedir表示工程的基路徑,設置為"."表示build.xml所在的路徑。default表示默認的target,運行ant時如果不指定 target,則用default指定的target.
property任務用來設置屬性,一個工程可以設置很多屬性,屬性有名字和值,屬性設置后可以在后面引用。
<property name="dist.name" value="struts_demo"/>設置一個名字為dist.name的屬性,其值為struts_demo,后面使用時用${dist.name}引用,表示字符串struts_demo.
<property name="src" location="src"/& gt;設置一個名字為src的屬性,它的值是一個路徑,用location設置。如果location內容以/或"或D:" C:"之類開始,表示絕對路 徑,否則表示相對路徑,相對于project中設置的basedir.
使用path或classpath可以設置類的路徑,后面引用時用id設置的值
構建工程最常用的ant內置任務:
mkdir: 創建目錄,dir=要創建的目錄
delete: 刪除文件或文件夾 dir=要刪除的文件或文件夾
javac: 編譯java源文件,java源文件放在srcdir指定的文件夾中,生成的.class文件按照 package語句組織目錄,存放在destdir指定的文件夾中。要注意源文件的目錄組織要與package語句相一致
war: 為web應用程序打包,destfile指定打包后生成的文件名,webxml指定所用的web.xml文件。<fileset dir="${basedir}"/>將basedir目錄下所有的文件也放在包中
上面的build.xml例子中,target中的屬性depends表示在執行本target之前必須要做的target,
例如dist 的depends=compile,意思是在用dist打包之前必須先用compile編譯。這樣當執行dist時首先執行compile
3.運行ant:
使用ant.bat可以直接運行ant,如果不帶任何參數,ant會在當前路徑下搜索build.xml文件,如果找到,就運行project的default指定的target.也可以帶參數來選擇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
有關ant使用和build.xml文件內容,在ant的manual中有詳細的描述。