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>  

 

posted @ 2015-08-07 18:15  Java碎碎念  阅读(911)  评论(0编辑  收藏  举报