ant+svn+tomcat实现项目自动部署
因工作需要,研究并实现了 ant+svn+tomcat实现项目自动部署,其中参考了下面文章:http://www.cnblogs.com/taoweiji/p/3700915.html
jar包需要eclipse的jar和svn的部分jar,已整理好,直接放入ant中lib下即可。
除ant外其他所需jar包 下载地址:https://files.cnblogs.com/files/haha12/%E9%99%A4ant%E5%A4%96%E5%85%B6%E4%BB%96%E6%89%80%E9%9C%80jar%E5%8C%85.rar
完整的build.xml如下,直接执行ant命令即可实现 自动登录svn、下载代码、编译、打war包、停止tomcat服务、拷贝到对应目录、启动tomcat服务、结束、
<?xml version="1.0" encoding="UTF-8"?> <project name="testweb" default="deploy" basedir="."> <property name="webapp.name" value="testweb"/> <property name="catalina.home" value="D:\testweb\tomcat_test"/> <property name="dist.dir" value="${basedir}"/> <property name="ant.home" value="D:\testweb\apache-ant-1.9.5" /> <property name="webRoot.dir" value="${basedir}/${webapp.name}/WebContent"/> <property name="src.dir1" value="${basedir}/${webapp.name}/src"/> <property name="src.dir2" value="${basedir}/${webapp.name}/syssrc"/> <property name="lib.dir" value="${webRoot.dir}/WEB-INF/lib"/> <property name="class.dir" value="${webRoot.dir}/WEB-INF/classes"/> <property name="svn.UserName" value="user" /> <property name="svn.UserPassword" value="pass" /> <property name="svn.URL" value="https://192.168.0.1/svn/test" /> <property name="svn.Dist" value="${basedir}/${webapp.name}" /> <!-- 目前使用执行bat命令发布 --> <!-- 由于代码有泛型,必须使用 jdt编译,引入4个eclipse的jar即可。 --> <property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/> <!-- SVN ANT --> <path id="ant.svn.classpath"> <fileset dir="${ant.home}/lib"> <include name="*.jar" /> </fileset> </path> <taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask"> <classpath refid="ant.svn.classpath" /> </taskdef> <target name="checkout" description="checkout full web project"> <delete dir="${basedir}/${webapp.name}"/> <svn username="${svn.UserName}" password="${svn.UserPassword}"> <checkout url="${svn.URL}" revision="HEAD" destPath="${svn.Dist}" /> </svn> </target> <path id="compile.classpath"> <fileset dir="${catalina.home}/lib"> <include name="*.jar"/> </fileset> <fileset dir="${lib.dir}"> <include name="*.jar"/> </fileset> </path> <!-- 初始化,建立目录,将多个src目录复制到同一src目录 depends="checkout" --> <target name="copysrc" description="将多个src目录复制到同一src目录" depends="checkout"> <copy todir="${src.dir1}"> <fileset dir="${src.dir2}"> </fileset> </copy> </target> <target name="clean" depends="copysrc"> <delete dir="${class.dir}"/> </target> <target name="compile" depends="clean"> <mkdir dir="${class.dir}"/> <javac srcdir="${src.dir1}" destdir="${class.dir}" encoding="utf-8" source="1.6" target="1.6" nowarn="true" includeantruntime ="on"> <compilerarg value="-Xlint:unchecked "/> <!-- 就是这句话!! --> <compilerarg value="-Xlint:deprecation "/> <!-- 就是这句话!! --> <classpath refid="compile.classpath"/> </javac> </target> <!-- 拷贝资源文件 --> <target name="copyres" depends="compile"> <copy todir="${class.dir}"> <fileset dir="${src.dir1}"> <exclude name="**/*.java"/> </fileset> </copy> </target> <!-- 生成war包 --> <target name="createwar" depends="copyres"> <delete file="${dist.dir}/${webapp.name}.war"/> <war destfile="${dist.dir}/${webapp.name}.war"> <fileset dir="${webRoot.dir}"/> </war> </target> <target name="shutdowntomcat" description="Install web application" > <echo message="正在关闭服务器。。。" /> <exec executable="${catalina.home}/bin/shutdown.bat" failonerror="false"></exec> <echo message="服务器成功关闭" /> <sleep seconds="10"/> <!-- 删除之前解压的war包--> <delete dir="${catalina.home}/webapps/${webapp.name}"></delete> <delete dir="${catalina.home}/webapps/${webapp.name}.war"></delete> </target> <target name="startuptomcat" description="Remove web application" > <sleep seconds="10"/> <echo message="正在启动服务器。。。" /> <exec executable="${catalina.home}/bin/startup.bat" failonerror="false"></exec> <echo message="服务器启动成功" /> </target> <!--部署到tomcat下面,如果系统有多个tomcat,不能配置系统变量:CATALINA_HOME,可以直接修改 bat文件 --> <target name="deploy" depends="createwar"> <ant target="shutdowntomcat"/> <!-- 拷贝war包--> <copy file="${dist.dir}/${webapp.name}.war" todir="${catalina.home}/webapps" /> <ant target="startuptomcat"/> </target> </project>