ant+svn+tomcat實現自動構建

    前段時間用作了一個簡單的web api服務,在調試的過程當中感受到手動發佈實在是效率低並且容易出錯,因而花點時間搞了一下ant+svn+tomcat的自動構建,效果不錯,今天拿出來分享一下。html

  • 準備工做

         SVN服務器:VisualSVN-Server-2.5.8.msi,這windows下比較好用的一個svn服務端,安裝和配置都很簡單。java

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

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

    須要安裝Subversion。http://subversion.apache.org/download/#pre-releasesapache

  • 步驟
  1. 首先安裝配置好SVN服務器和ANT(具體的過程我就不累贅了)。
  2. 安裝svnant插件,將svnant.1.3.0解壓後的lib目錄下全部的jar包拷貝至Ant安裝目錄下的lib文件夾。
  3. 編寫腳本,以下

 build.xmlwindows

<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文件以下:api

[html]  view plain copy
 
  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批處理文件,這樣在執行的時候只須要雙擊一下就能夠徹底搞定。tomcat

         bat文件以下:服務器

 

[html]  view plain copy
 
  1. @echo off  
  2. d:  
  3. cd imweb  
  4. ant deploy  
  5. exit  
相關文章
相關標籤/搜索