Ant是一個將軟件編譯、測試、部署等步驟聯繫在一起加以自動化的一個工具,大多用於Java環境中的軟件開發。由Apache軟件基金會所提供。默認情況下,它的buildfile(XML文件)名爲build.xml。--來自百科
一、準備環境
首先確保機器上已經正確安裝和配置Ant,一句話概括爲解壓Ant安裝包,將ant的lib目錄完整路徑添加到環境變量classpath,將ant的bin目錄完整路徑添加到環境變量path中。
確保Tomcat以及JDK已經正確安裝和配置,由於不是本文的重點,具體操作步驟可參考網絡資料。
作者的Ant安裝在E:\apache-ant-1.9.4,Tomcat安裝在E:\apache-tomcat-7.0.32, JDK安裝在C:\Program Files\Java\jdk1.6.0_10, JRE安裝在C:\Program Files\Java\jre6。
二、將在Eclipse上開發好的Web應用程序利用Ant打包併發布
1)確定Ant需要執行哪些操作
首先,看看Eclipse開發的Web應用程序的目錄結構,Java代碼位於src目錄下,Web文件位於WebContent目錄下。
其次,查看tomcat上面部署的Web應用程序的目錄結構。
不難看出,開發時在WebContent目錄下的文件發佈後應該放在tomcat\webapp下的Web項目文件裏面,而開發是src目錄下的文件發佈後應該放在tomcat\webapp下Web項目裏面WEB-INF的子目錄classes裏面。
因此,對於項目名爲TestJSP的具體的發佈步驟如下:
1)新建Ant/TestJSP
2)新建Ant/TestJSP/src
3)將Eclipse 項目TestJSP子目錄WebContent裏面所有文件拷貝到Ant/TestJSP目錄下
將Eclipse項目TestJSP子目錄src裏面的所有Java文件拷貝到Ant/TestJSP/src目錄下
Note: 對於小型的Web應用也可以不拷貝java源代碼到新的目錄,而直接編譯,但有時源代碼在服務器機器上,需要ftp到本地,爲了保待良好一致的習慣,建議先copy一份,再對副本進行編譯。
4)使用Ant的Javac編譯Ant/TestJSP/src/*.Java文件,將編譯後的*.class文件放到Ant/TestJSP/WEB-INF/classed目錄下
5)使用Ant的war打包TestJSP
6)使用Ant的copy拷貝war包到tomcat/webapp目錄下
Note: 有時Web服務器和打包機器不同,需要使用Ant的ftp任務將War包傳到服務器上。
Note: 作者的Web程序的路徑爲E:\workspace\TestJSP,爲了提高Ant build文件的複用性,不在build.xml裏面硬編碼項目名稱,而採用運行時帶”-D”選項設置屬性的方式來動態加載項目名稱。
2)編輯Ant build文件
這裏文件名爲build.xml,這是Ant默認的build文件,當然也可以通過-f 或-buildfile 指定其他的build文件.
<?xml version="1.0" encoding="UTF-8"?>
<project name="${Name}" basedir="." default="publish">
<!—use Ant –Dname=TestJSP to run Ant, then ${Name} will get TestJSP-->
<property name="src" value="${basedir}/${Name}/src"/>
<property name="app" value="${basedir}/${Name}/WebContent" />
<property name="lib" value="${app}/WEB-INF/lib" />
<!—set property of project TestJSP related dir-->
<property name="antbuild" value="${basedir}/Ant" />
<property name="build.src" value="${antbuild}/${Name}/src" />
<property name="build.app" value="${antbuild}/${Name}" />
<property name="build.class" value="${antbuild}/${Name}/WEB-INF/classes"/>
<!—set property of Ant dir to build-->
<property name="j2eelib.dir" value="C:\Program Files\Java\jre6\lib" />
<property name="tomcat.dir" value="E:\apache-tomcat-7.0.32\webapps" />
<path id="classpath">
<fileset dir="${j2eelib.dir}">
<include name="**/*.jar" />
</fileset>
<fileset dir="${lib}">
<include name="**/*.jar" />
</fileset>
</path>
<!—set classpath for javac task-->
<target name="init">
<mkdir dir="${antbuild}" />
<mkdir dir="${build.src}" />
<mkdir dir="${build.class}" />
<copy todir="${build.src}">
<fileset dir="${src}">
<include name="**/*.java" />
</fileset>
</copy>
<copy todir="${build.app}">
<fileset dir="${app}" />
</copy>
</target>
<!—mkdir and copy file-->
<target name="compile" depends="init">
<javac srcdir="${build.src}" destdir="${build.class}" >
<classpath refid="classpath" />
</javac>
<delete dir="${build.src}" />
</target>
<!—compile the java file and copy the class file-->
<target name="war" depends="compile">
<war destfile="${build.app}/${Name}.war" webxml="${build.app}/WEB-INF/web.xml">
<fileset dir="${build.app}"/>
</war>
</target>
<!—compress the project file to war file-->
<target name=”publish” depends=”war”>
<copy destdir=”${tomcat.dir}” >
<fileset dir=”${build.app}”>
<include name=”*.war” />
</fileset>
</copy>
</target>
<!—copy war file to tomcat-->
<target name="publish2" depends="war">
<ftp server="ftp.webserver.com" port="21"
remotedir="${tomcat.dir}" userid="ainet"
password="r00t" passive="yes"
depends="yes" binary="no">
<fileset dir="${build.app}">
<include name="*.war"/>
</fileset>
</ftp>
</target>
<!—sometimes we need ftp the war to webserver-->
</project>
3)運行Ant命令
Build.xml文件放在E:\workspace目錄下,TestJSP項目文件也在E:\workspace目錄下,在cmd窗口,跳轉到E:\workspace目錄下運行”Ant –Dname=TestJSP”
啓動tomcat,運行瀏覽器訪問http://localhost:8080/TestJSP/,效果圖如下
三、後記
關於更多Ant,請訪問http://ant.apache.org/manualdownload.cgi,獲取官方文檔。
下載示例程序:http://pan.baidu.com/s/1ntNwiST