Ant入門案例-打包Web程序併發布



    Ant是一個將軟件編譯、測試、部署等步驟聯繫在一起加以自動化的一個工具,大多用於Java環境中的軟件開發。由Apache軟件基金會所提供。默認情況下,它的buildfile(XML文件)名爲build.xml--來自百科

 

一、準備環境

首先確保機器上已經正確安裝和配置Ant,一句話概括爲解壓Ant安裝包,將antlib目錄完整路徑添加到環境變量classpath,將antbin目錄完整路徑添加到環境變量path中。

確保Tomcat以及JDK已經正確安裝和配置,由於不是本文的重點,具體操作步驟可參考網絡資料。

 

作者的Ant安裝在E:\apache-ant-1.9.4Tomcat安裝在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\webappWeb項目裏面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)使用AntJavac編譯Ant/TestJSP/src/*.Java文件,將編譯後的*.class文件放到Ant/TestJSP/WEB-INF/classed目錄下

5)使用Antwar打包TestJSP

6)使用Antcopy拷貝war包到tomcat/webapp目錄下

Note: 有時Web服務器和打包機器不同,需要使用Antftp任務將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


發佈了40 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章