Ant打包編譯eclipse中的Dynamic Web Project(動態web項目)

    本篇主要寫的是用ant來打包編譯一個動態的web項目,該項目是我以前寫的一個測試項目,用到的框架是struts2+hibernate,前臺界面很少就三個,後臺的代碼也不多,主要的就是回顧一下以前學過的struts2,然後練習一下剛接觸的hibernate和ant。項目的結構如下:

關於struts2和hibernate的環境搭建這裏就不說了,主要說的是用ant打包編譯該項目。本人是第一次接觸ant這個東西,用了將近一下午的時間才把這個項目給打包出來,說出來真是。。。。。。

下邊的是build.xml源碼:

<?xml version="1.0" encoding="UTF-8"?>
<project default="movewar" basedir=".">
	<!-- 路徑信息 -->
	<property name="classes" value="build/classes"/>
	<property name="build" value="build"/>
	<property name="lib" value="WebContent/WEB-INF/lib"/>
	<property name="tomcathome" value="D:/workspace/tomcat6"></property>
	<path id="weblib">  
        <fileset dir="${lib}">
            <include name="*.jar"/>
        </fileset>  
	</path>
	
	<!-- 刪除build文件夾 -->
	<target name="del" description="init target">
		<delete dir="${build}"></delete>
		<echo>刪除build文件夾</echo>
	</target>
	
	<!-- 移動配置文件 -->
	<target name="movepropertity" depends="del" description="">
		<!-- 將配置文件移動到war包目錄下 -->
		<copy todir="${build}/classes">
			<fileset dir="src" id="propertityfile">
    			<include name="*.xml"/>
				<include name="*.properties"/>
				<exclude name="**/*.java"/>
			</fileset>
		</copy>
		<!-- 將pojo中的hibernate配置文件移動到war包對應目錄下 -->
		<copy todir="${build}/classes/com/cpw/pojo">
			<fileset dir="src/com/cpw/pojo" id="pojofile">
    			<include name="*.xml"/>
				<exclude name="**/*.java"/>
			</fileset>
		</copy>
	</target>
	
	<!-- 編譯src文件夾下的java文件到classes文件夾下 -->
	<target name="compile" depends="movepropertity" description="">
		<mkdir dir="${build}/classes"/>
		<javac srcdir="src" destdir="${classes}" encoding="UTF-8" includeantruntime="on">
			<classpath refid="weblib"></classpath>
		</javac>
		<echo>編譯src文件夾下的java文件到classes文件夾下</echo>
	</target>
	
	<!-- 打war包 -->
	<target name="war" depends="compile" description="">
		<war destfile="${build}/test01.war" webxml="WebContent/WEB-INF/web.xml">
			<lib dir="${lib}"/>
			<classes dir="${classes}"/>
			<fileset dir="WebContent"/>
		</war>
		<echo>打war包</echo>
	</target>
	
	<!-- 移動war包 -->
	<target name="movewar"  depends="war" description="movewar target">
		<!-- 刪除tomcat下的項目文件夾和war包 -->
		<delete file="${tomcathome}/webapps/test01.war"/>
		<delete dir="${tomcathome}/webapps/test01"/>
		<!-- 移動war包 -->
		<copy todir="${tomcathome}/webapps">
			<fileset file="${build}/test01.war"></fileset>
		</copy>
		<!-- 刪除原有編譯的war包 -->
		<delete file="${build}/test01.war"/>
		<echo>移動war包</echo>
	</target>
</project>

對應的代碼都有相對應的註釋,我就說一下項目打包中遇到的問題。

1、編碼問題:

xml文件寫完後第一次運行就遇到了編碼問題,警告:編碼 GBK 的不可映射字符!我的全局編碼格式是UTF-8的,不可能出現gbk編碼,我就上網查了查解決方案,後來解決的方法是在<javac></javac>中添加了編碼聲明

encoding="UTF-8"

該問題解決!

2、jar包不存在:

編碼問題解決後接着打包,又提示“軟件包 XXXX 不存在”,上網查詢後發現需要在<javac></javac>中添加<classpath>標籤,並指明jar包的位置。於是我就用了一個<path>標籤聲明jar包位置,並在<javac>中添加<classpath>標籤

	<path id="weblib">  
        <fileset dir="${lib}">
            <include name="*.jar"/>
        </fileset>  
	</path>

		<javac srcdir="src" destdir="${classes}" encoding="UTF-8" includeantruntime="on">
			<classpath refid="weblib"></classpath>
		</javac>

然後問題就解決了。

3、其他問題

後來打包編譯沒問題了,不過將war包拷貝到tomcat下後,運行的時候出問題了。原來是struts2和hibernate的配置文件沒有添加到war包中,

		<!-- 將配置文件移動到war包目錄下 -->
		<copy todir="${build}/classes">
			<fileset dir="src" id="propertityfile">
    			<include name="*.xml"/>
				<include name="*.properties"/>
				<exclude name="**/*.java"/>
			</fileset>
		</copy>

這段代碼是將struts2和hibernate的配置文件複製到war包的目錄下,後來又發現hibernate的pojo配置文件也忘了複製過去了,所以寫了下邊的代碼

		<!-- 將pojo中的hibernate配置文件移動到war包對應目錄下 -->
		<copy todir="${build}/classes/com/cpw/pojo">
			<fileset dir="src/com/cpw/pojo" id="pojofile">
    			<include name="*.xml"/>
				<exclude name="**/*.java"/>
			</fileset>
		</copy>

這樣一來運行就沒問題了。

經過這個項目的配置運行,對ant的使用也有了大概的瞭解和認識,在這裏貼出來和大家一起學習學習!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章