• ant+svn+tomcat实现自动构建


        前段时间用做了一个简单的web api服务,在调试的过程中感觉到手动发布实在是效率低而且容易出错,于是花点时间搞了一下ant+svn+tomcat的自动构建,效果不错,今天拿出来分享一下。

    • 准备工作

             SVN服务器:VisualSVN-Server-2.5.8.msi,这windows下比较好用的一个svn服务端,安装和配置都很简单。

             Ant: Ant 1.7(我用的比较老的版本)。

             Ant插件:svnant1.3(http://subclipse.tigris.org/svnant.html), ANT集成SVN的插件。

        需要安装Subversion。http://subversion.apache.org/download/#pre-releases

    • 步骤
    1. 首先安装配置好SVN服务器和ANT(具体的过程我就不累赘了)。
    2. 安装svnant插件,将svnant.1.3.0解压后的lib目录下所有的jar包拷贝至Ant安装目录下的lib文件夹。
    3. 编写脚本,如下

     build.xml

    <project name="daka_main" basedir=".">  
      
        <!--############################################################项目目录 -->  
          
        <!--项目根-->  
        <property name="project" value="project" />  
        <property name="src" value="${project}/src" />  
        <property name="resources" value="${project}/src"/>  
        <property name="test" value="${project}/test"></property>  
        <property name="target" value="${project}/target"></property>  
        <property name="main-target" value="${project}/target/classes"/>  
        <property name="test-target" value="${project}/target/test-classes"/>  
        <!--web 目录 -->  
        <property name="web-root" value="${project}/WebRoot"/>  
      
        <!-- ant 属性文件 -->  
        <property file="build.properties"/>  
      
        <!--############################################################软件依赖 -->  
        <!--ant lib目录-->  
        <property name="ant-lib" value="${ant.home}/lib"/>  
        <!-- tomcat lib目录 -->  
        <property name="tomcat-lib" value="${tomcat.home}/lib"/>  
          
        <!-- 定义classpath-->  
        <path id="classpath">  
            <fileset dir="${ant-lib}" includes="***.jar"></fileset>  
            <fileset dir="${tomcat-lib}" includes="***.jar"></fileset>  
            <fileset dir="${web-root}/WEB-INF/lib" includes="***.jar"></fileset>  
        </path>  
      
    
      
      
        <!-- 清理-->  
        <target name="clean">  
            <delete dir="${project}"></delete>  
        </target>  
        <!-- 初始化-->  
        <target name="init" depends="clean">  
            <mkdir dir="${project}"/>  
            <mkdir dir="${main-target}"/>  
            <mkdir dir="${test-target}"/>  
        </target>  
      
        <!-- 检出代码 这里使用 export 不是checkout 二者区别 checkout会svn相关信息文件检出,export只是检出最新的文件-->  
    <path id="path.svnant">  
        <fileset dir="${basedir}">  
          <include name="**/*.jar"/>  
        </fileset>  
      </path>  
    
    <typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="path.svnant"/>  
    <target name="checkout" depends="init">   
        <svnSetting id="svnparams" username="${svn.username}" password="${svn.password}" javahl="false"/>  
        <svn refid="svnparams">  
          <checkout url="${svn.url}" destPath="${project}" />  
        </svn>  
      </target>  
    
    
        <!-- 编译 -->  
        <target name="compile" depends="checkout">  
            <javac srcdir="${src}" destdir="${main-target}" encoding="UTF-8" includeAntRuntime="false">  
                <classpath refid="classpath"></classpath>  
            </javac>  
            <copy todir="${main-target}">  
                <fileset dir="${resources}">  
                    <exclude name="sql/**"/>  
                </fileset>  
            </copy>  
        </target>  
        <!-- 打war包 -->  
        <target name="build" depends="compile">  
              
            <war destfile="${target}/${deploy.name}.war" webxml="${web-root}/WEB-INF/web.xml">  
                <fileset dir="${web-root}"></fileset>  
                <classes dir="${main-target}"></classes>  
            </war>  
            <delete dir="${main-target}"></delete>  
            <delete dir="${test-target}"></delete>  
        </target>  
          
          
        <!--shutdowntomcat -->  
          
        <target name="shutdowntomcat" description="========shutdowntomcat===========">  
            <echo message="正在关闭服务器。。。" />  
            <exec executable="${tomcat.home}/bin/shutdown.bat" failonerror="false"></exec>  
            <echo message="服务器成功关闭" />  
            <sleep seconds="10"/>  
            <!-- 删除之前解压的war包-->  
            <delete dir="${tomcat.home}/webapps/${deploy.name}"></delete>  
        </target>  
          
        <!--startuptomcat -->  
        <target name="startuptomcat" description="========startuptomcat===========">  
            <sleep seconds="5"/>  
            <echo message="正在启动服务器。。。" />  
            <exec executable="${tomcat.home}/bin/startup.bat" failonerror="false"></exec>  
            <echo message="服务器启动成功" />  
        </target>  
          
        <!--部署到tomcat下面 -->  
        <target name="deploy" depends="build">  
            <ant target="shutdowntomcat"/>  
            <copy file="${target}/${deploy.name}.war" todir="${tomcat.home}/webapps" />  
            <ant target="startuptomcat"/>  
        </target>   
      
          
    </project>  

             build.properties文件如下:

    [html] view plaincopy
     
    1. tomcat.home=D:/apache-tomcat-6.0.35  
    2. ant.home=D:/apache-ant-1.7.1  
    3.   
    4. svn.url=https://hjt2012.com/svn/java/branches/imweb  
    5. svn.username=svn  
    6. svn.password=123456  
    7.   
    8. deploy.name=imweb  
    • 执行脚本

             可以编写一个bat批处理文件,这样在执行的时候只需要双击一下就可以完全搞定。

             bat文件如下:

    [html] view plaincopy
     
    1. @echo off  
    2. d:  
    3. cd imweb  
    4. ant deploy  
    5. exit  
  • 相关阅读:
    Delphi中创建一个可以改变大小的无边框窗口
    Delphi中让窗口关闭按钮无效的6种方法
    把人笑抽筋的签名
    Delphi中判断窗体最大化和最小化事件
    Delphi中窗体的帮助按钮上执行一个自定义的动作
    无法查询部门收支分析表
    Delphi中去掉限制窗体最小尺寸的Windows约束
    Delphi中在窗体标题栏画自定义文字
    调拨单等单据定位功能没有过滤条件
    Form中对象的引用
  • 原文地址:https://www.cnblogs.com/taoweiji/p/3700915.html
Copyright © 2020-2023  润新知