web工程使用ant打war包

web工程使用ant打war包

介紹
編寫了一個基於ssi的web工程,現在想把它打成war包部署到服務器上面去。打算使用ant在本地打包,然後war包扔到服務器的tomcat下面去
需求
1.使用ant把web工程打成war包

步驟
1.編寫build.xml文件:
<project name="testProject" default="war" basedir=".">  
    <property name="classes.dir" value="build/classes"/>  
    <property name="build.dir" value="build"/>  
    <property name="lib.dir" value="lib/"/>  
      
    <!--項目依賴的第三方jar包路徑-->  
    <path id="lib_classpath">  
        <fileset dir="${lib.dir}">  
            <include name="*.jar"/>  
        </fileset>  
   
    </path>  
  
    <target name="clean" description="刪除build目錄">  
        <delete dir="${build.dir}"/> 
    	<mkdir dir="${build.dir}" />
    	<mkdir dir="${classes.dir}" />
    </target>  
  
    <target name="compile" depends="clean" description="建立${classes}路徑,並編譯class文件到${classes}路徑下">  
        <!--執行編譯-->  
        <javac srcdir="src" destdir="${classes.dir}" encoding="UTF-8"> <!--工程使用的是urf-8格式-->  
            <classpath refid="lib_classpath"/> <!--引入項目依賴的第三方jar包-->  
        </javac>  
    </target>  
      
    <target name="prepare" description="將Struts、Spring、Hibernate、properties等配置文件拷貝到${classes}路徑下">  
        <!--拷貝所有的xml配置文件-->  
        <copy todir="${classes.dir}">     
            <fileset dir="src">     
                <include name="**/*.xml"/>     
            </fileset>     
        </copy>  
        <!--拷貝所有的屬性文件-->  
        <copy todir="${classes.dir}">     
            <fileset dir="src">     
                <include name="**/*.properties"/>     
            </fileset>     
        </copy>  
    </target>  
  
    <target name="war" depends="compile,prepare" description="打包war">  
        <war destfile="${build.dir}/testProject.war" webxml="WebRoot/WEB-INF/web.xml">  
            <!--拷貝WebRoot下除了Web-INF和META-INF的兩個文件夾-->  
            <fileset dir="WebRoot" />  
            <!--拷貝lib目錄下的jar包-->  
            <lib dir="${lib.dir}"/>  
            <!--拷貝${classes}下的class文件-->  
            <classes dir="${classes.dir}"/>  
        </war>  
    </target>  
</project> 
關於**/*:xml:遍歷目錄(包括子目錄),檢索出xml文件。



2.build.xml完成後,開始ant打包
3.因爲web工程使用到了tomcat目錄下的jar包,如果你的環境變量裏面沒有把tomcat的jar包目錄配置上去,打包會報錯。則可以手工在ant打包時添加tomcat下面的jar包上去

4.點擊run開始打包,出現如下,表示打包成功




問題
1.亂碼問題:如果工程裏面的java文件有亂碼,比如代碼寫完,帶中文,使用了gbk32的格式,如果突然轉成其他格式,比如常用的UTF-8,本地編譯的時候不會報錯,使用ant打包則會警告甚至報錯:
xx.java:92: 警告:編碼 GBK 的不可映射字符
                        request.setAttribute("msgInfo", "緋葷粺鍑虹幇寮傚父錛岃
閲嶈瘯錛?);
                       ^
xx.java:92: 非法表達式開始
                        request.setAttribute("msgInfo", "緋葷粺鍑虹幇寮傚父錛岃
閲嶈瘯錛?);
                               ^
xx.java:92: 需要 ';'
                        request.setAttribute("msgInfo", "緋葷粺鍑虹幇寮傚父錛岃
閲嶈瘯錛?);
                                            ^
xx.java:92: 結束字符串面值
                        request.setAttribute("msgInfo", "緋葷粺鍑虹幇寮傚父錛岃
閲嶈瘯錛?);

如果遇到這些問題,比較笨的辦法就是先轉成正確的字符格式,copy代碼後,然後把java類改成想要的字符格式,把copy的代碼粘貼上去即可。


2.工程內需要連接數據庫查詢數據,war包部署後,發現報錯:Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
1.首先應檢查項目的lib目錄下是否有mysql的驅動包
2.應該將mysql的驅動包放到common目錄的lib文件夾下 
   即 C:\Program Files\Tomcat 5.5\common\lib然後重啓服務器即可解決問題



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