要把项目所需的jar包全部放WEB-INF的lib下,不然会出编译问题
中文乱码问题:<javac encoding="utf-8" srcdir="${src.dir}" destdir="${classes.dir}">
<classpath refid="compile.classpath"/>
</javac>
摸索了好一阵子,终于把一个WEB项目打成了一个WAR包,其实原理很简单,就是编译所有CLASS的类,然后把它放到一个临时文件夹中。用WRA命令时,会有四个东西,WEB。XML,LIB下的包,WEBROOT下的所有文件。编译后的CLASS文件夹。现在把BUILD。XML放下来,有东西共享!
<?xml version="1.0" encoding="UTF-8"?>
<project name="ipnet" default="deleteWar" basedir=".">
<property name="build" value="${basedir}/build" />
<property name="build.class" value="${build}/classes"/>
<property name="src" value="${basedir}/src" />
<property name="webRoot" value="${basedir}/WebRoot"/>
<property name="lib" value="${webRoot}/WEB-INF/lib"/>
<!--定义CLASSPACH,编译时用到你外部加入的包-->
<path id="classpath">
<pathelement location="${src}" />
<fileset dir="${lib}" includes="***.jar" />
</path>
<!--请将下面的路径改为你本地的路径-->
<property name="webserver" value="C:/Documents and Settings/mao/桌面/"/>
<!--删除任务-->
<target name="clean" description="删除">
<echo message="删除目录"/>
<delete dir="${build}" />
</target>
<!--创建一个临时目录-->
<target name="init" description="创建目录" depends="clean">
<echo message="创建目录--以执行"/>
<mkdir dir="${build.class}" />
</target>
<!--编译java源文件-->
<target name="compile" description="编译文件" depends="init">
<echo message="编译文件"/>
<javac srcdir="${src}" destdir="${build.class}">
<classpath refid="classpath" />
<compilerarg line="-encoding GBK "/>
</javac>
</target>
<!--打成WAR包-->
<target name="generwar" depends="compile">
<echo message="打成WAR"/>
<war destfile="${build}/${ant.project.name}.war" webxml="${webRoot}/WEB-INF/web.xml" >
<fileset dir="webRoot" ></fileset>
<lib dir="${lib}"/>
<classes dir="${build.class}"/>
</war>
</target>
<!--把打好的WAR删除-->
<target name="deleteWar" depends="fabu" description="删除服务器上的war">
<delete dir="${build}"/>
</target>
<!--把WAR放到一个指定目录,这里是直接布署到TOMCAT服务器-->
<target name="fabu" depends="generwar" description="发布">
<copy file="${build}/${ant.project.name}.war" todir="${webserver}">
</copy>
</target>
</project>