使用ant脚本可以实现web项目的部署,从而减少不必要的重复性工作.
步骤1. 新建一个web项目(目录结构如下图),first包下创建一个java类
package first; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class HelloAnt extends HttpServlet { public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<span style='color:red;'>"+"Hello servlet!"+"</span>"); out.close(); } }
步骤2. 编辑web.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <servlet> <servlet-name>helloServlet</servlet-name> <servlet-class>first.HelloAnt</servlet-class> </servlet> <servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/sayHello</url-pattern> </servlet-mapping> </web-app>
步骤3. 项目根目录下,创建build.xml如下
<?xml version="1.0" encoding="UTF-8"?> <project name="anttest" default="compile" basedir="."> <property name="webapp.name" value="antBuidWeb"></property> <property name="catalina.home" value="D:/apache-tomcat-6.0.33"/> <property name="src.dir" value="${basedir}/src"/> <property name="lib.dir" value="${basedir}/WebRoot/WEB-INF/lib"/> <property name="class.dir" value="${basedir}/WebRoot/WEB-INF/classes"/> <property name="webapps.dir" value="${catalina.home}/webapps"/> <property name="war.dir" value="${basedir}/war"/> <!-- **********************************set classpath********************************** --> <path id="compile.classpath"> <fileset dir="${catalina.home}/lib"> <include name="*.jar"/> </fileset> <fileset dir="${lib.dir}"> <include name="*.jar"/> </fileset> </path> <!-- **********************************init********************************** --> <target name="init"> <mkdir dir="${war.dir}"/> </target> <!-- **********************************clean class********************************** --> <target name="clean" description="Delete old build and dist directories" depends="init"> <delete dir="${class.dir}" includes="**/*.class"/> </target> <!-- **********************************compile java********************************** --> <target name="compile" description="Compile Java sources" depends="clean"> <mkdir dir="${class.dir}"/> <javac srcdir="${src.dir}" destdir="${class.dir}"> <classpath refid="compile.classpath"/> </javac> <!--This copy opera is not required <copy todir="${class.dir}"> <fileset dir="${src.dir}" excludes="**/*.java"/> </copy> --> </target> <!-- **********************************deploy webapp********************************** --> <target name="deploy" description="Install application to servlet container" depends="compile"> <delete dir="${webapps.dir}/${webapp.name}"/> <war destfile="${war.dir}/${webapp.name}.war" webxml="${basedir}/WebRoot/WEB-INF/web.xml"> <fileset dir="webRoot" ></fileset> <lib dir="${lib.dir}"/> <classes dir="${class.dir}"/> </war> <copy file="${war.dir}/${webapp.name}.war" todir="${webapps.dir}"> </copy> </target> <!-- **********************************start web server********************************** --> <target name="startserver" description="Start web server" > <exec dir="${catalina.home}/bin" executable="cmd.exe"> <env key="CATALINA_HOME" path="${catalina.home}"/> <arg value="/c startup.bat"/> </exec> </target> <!-- **********************************stop web server********************************** --> <target name="stopserver" description="Stop web server" > <exec dir="${catalina.home}/bin" executable="cmd.exe"> <env key="CATALINA_HOME" path="${catalina.home}"/> <arg value="/c shutdown.bat"/> </exec> </target> <!-- **********************************start work********************************** --> <target name="start" description="Clean build and dist directories, then compile"> <ant target="deploy"/> <ant target="startserver"/> </target> <!-- **********************************reload web server********************************** --> <target name="reload" description="reload web server"> <ant target="stopserver"></ant> <sleep seconds="2"></sleep> <ant target="start"></ant> </target> </project>
至此,build.xml已经完成了,可以 执行你需要的任务了. 项目目录结构图如下: