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然后重启服务器即可解决问题



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