<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    vjame

    優化代碼是無止境的
    隨筆 - 65, 文章 - 9, 評論 - 26, 引用 - 0
    數據加載中……

    svn+ant+tomcat+hudson 持續構建WEB應用最佳實踐

    經過幾天的研究,終于實現自動構建部署WEB應用的目標,詳細配置過程記錄如下

    一、準備安裝包
    jdk1.6.0_26
    apache-ant-1.8.2
    apache-tomcat-5.5.27
    hudson-2.1.0

    二、在hudson中配置環境,包括jdk、ant、svn信息等

    將hudson-2.1.0拷貝到tomcat/webapps目錄下,啟動tomcat,startup.bat

    打開IE在地址欄中輸入 http://localhost:8080/hudson-2.1.0/

    進入系統管理-》系統設置  

    JDK環境配置




    ANT環境配置



    MAVEN環境配置        


    SHELL命令設置重要) windows下輸入cmd   



    MAVEN構建環境配置  ,主要是mvn選擇和目標命令配置  



    郵件通知配置,用戶默認郵件后綴將加在構建用戶名后面作為郵件地址,以便每次構建郵件通知項目成員  
      
     


    三、在hudson中創建一個新任務,為了配置方便,我們這里選擇自由風格



    下面是項目的詳細配置

    SCM配置, url中輸入工程代碼倉庫地址,這里涉及到權限驗證,需要輸入用戶和密碼




    構建觸發配置,poll scm 采用調度輪詢源代碼庫,配置幫助可以查看輸入框后的幫助

       


    ANT構建配置

    首先選擇 Add build step,選擇 Invoke Ant ,然后在ant version中下拉選擇前面配置的ant-1.8.2,targets不是必填項,默認是ant構建default目標 default="deploy"
       



     
    項目郵箱通知相關干系人, Recipients 為項目負責人,一般填寫經理郵箱,
    第一個選項為給所有人發送每一次不穩定的構建
    第二個選項為發送給所有與這次構建相關的成員

         

    最后不要忘記點擊Save按鈕保存配置   


    build.xml

    <?xml version="1.0" encoding="utf-8"?>
    <project name="category" basedir="." default="deploy">
        
    <property name="lib.dir" value="${basedir}/WebRoot/WEB-INF/lib" />
        
    <property name="src.dir" value="${basedir}/java" />
        
    <property name="build.dir" value="${basedir}/build" />
        
    <property name="app.dir" value="D:\apache-tomcat-5.5.27">
        
    </property>
        
    <property name="runtime.lib" value="${app.dir}\common\lib" />
        
    <property name="deploy.lib" location="${basedir}/deploylib" />
        
    <property name="deploy.dir" value="${app.dir}\webapps" />
        
    <property name="app.url" value="http://localhost:8899/">
        
    </property>

        
    <property name="javac.debug" value="on" />
        
    <property name="javac.optimize" value="off" />
        
    <property name="javac.target" value="1.5" />
        
    <property name="javac.source" value="1.5" />


        
    <condition property="tomcat.open">
            
    <http url="${app.url}" />
        
    </condition>

        
    <condition property="tomcat.close">
            
    <not>
                
    <http url="${app.url}" />
            
    </not>
        
    </condition>

        
    <path id="project.class.path">
            
    <fileset dir="${lib.dir}">
                
    <include name="***.jar" />
            
    </fileset>
            
    <fileset dir="${deploy.lib}">
                
    <include name="*.jar" />
            
    </fileset>
        
    </path>

        
    <target name="init">
            
    <tstamp />
            
    <property environment="env" />
            
    <delete dir="${build.dir}" />
            
    <mkdir dir="${build.dir}" />
        
    </target>

        
    <target name="compaile" depends="init">
            
    <javac srcdir="${src.dir}" destdir="${build.dir}" encoding="utf-8" classpathref="project.class.path" source="${javac.source}" target="${javac.target}" debug="true">
            
    </javac>
            
    <copy todir="${build.dir}">
                
    <fileset dir="${basedir}/src">
                
    </fileset>
                
    <fileset dir="${src.dir}">
                    
    <include name="**/*.xml" />
                    
    <include name="***.properties" />
                
    </fileset>
            
    </copy>
        
    </target>

        
    <target name="war" depends="compaile">
            
    <copy todir="${basedir}/WebRoot/WEB-INF/classes">
                
    <fileset dir="${build.dir}">
                
    </fileset>
            
    </copy>
            
    <war destfile="${basedir}/${ant.project.name}.war" basedir="${basedir}/WebRoot" webxml="${basedir}/WebRoot/WEB-INF/web.xml">
            
    </war>
        
    </target>

        
    <target name="tomcat-start">
            
    <!-- ALL OK -->
            
    <exec dir="${app.dir}/bin" executable="cmd">
                
    <env path="${app.dir}" key="CATALINA_HOME" />
                
    <env path="${app.dir}\temp" key="CATALINA_TMPDIR" />
                
    <env path="${app.dir}" key="CATALINA_BASE" />
                
    <arg value="/C startup.bat" />
            
    </exec>
            
    <!--
            C:\>SCHTASKS /Create /RU SYSTEM /SC ONSTART /TN StartupTomcat /TR "D:\apache-tomcat-5.5.27\bin\startup.bat"
            <exec executable="SCHTASKS">
                <arg value="/Run"/>
                <arg value="/TN"/>
                <arg value="startup"/>
            </exec>
            
    -->
            
    <!-- 
            <exec executable="${app.dir}/bin/startup.bat" spawn="true" vmlauncher="false">
            <env key="CATALINA_HOME" value="${app.dir}" />
            <arg line="/c start ${app.dir}/bin/startup.bat" />
            </exec>
            
    -->
            
    <!-- 
            <java jar="${app.dir}/bin/bootstrap.jar" fork="true">
            <jvmarg value="-Dcatalina.home=${app.dir}"/>
                <arg line="start"/>
            </java>
             
    -->
        
    </target>

        
    <target name="tomcat-stop" if="">
            
    <!--<exec dir="${app.dir}/bin"  executable="cmd">
        <env path="${app.dir}" key="CATALINA_HOME" />
        <arg value="/c shutdown.bat" />
        </exec>
        <echo>111</echo>
    -->
            
    <!--
            C:\>SCHTASKS /Create /RU SYSTEM /SC ONSTART /TN ShutdownTomcat /TR "D:\apache-tomcat-5.5.27\bin\shutdown.bat"
            <exec executable="SCHTASKS">
                <arg value="/Run"/>
                <arg value="/TN"/>
                <arg value="ShutdownTomcat"/>
            </exec>
            
    -->
            
    <java jar="${app.dir}/bin/bootstrap.jar" fork="true">
                
    <jvmarg value="-Dcatalina.home=${app.dir}" />
                
    <arg line="stop" />
            
    </java>
            
    <waitfor maxwait="5" maxwaitunit="second">
                
    <available file="errors.log" />
            
    </waitfor>
        
    </target>


        
    <target name="deploy" depends="war">
            
    <antcall target="tomcat-stop" />
            
    <waitfor maxwait="60000">
                
    <not>
                    
    <http url="${app.url}" />
                
    </not>
            
    </waitfor>
            
    <echo>wati for tomcat close</echo>
            
    <delete dir="${deploy.dir}/${ant.project.name}">
            
    </delete>
            
    <copy todir="${deploy.dir}" file="${basedir}/${ant.project.name}.war">
            
    </copy>
            
    <antcall target="tomcat-start" />

        
    </target>
    </project>


    將build.xml文件放置到工程根目錄下,hudson構建會自動執行ANT
    自動部署可以使用catalina-ant.jar中的deploy和undeploy命令,但是這種方式將要在tomcat中反復部署war,最終導致jvm內存不足,所以選擇
    shutdown和startup方式來操作tomcat,已達到持續構建的目標
    啟動和停止tomcat的方式有多種,其中可以在ant中調用windows計劃任務,具體查看文件中的注釋。
    整個配置涉及到啟動2個tomcat,所以需要更改tomcat/conf/server.xml文件中的相關端口,保證2個tomcat端口不沖突

    hudson持續構建命令行輸出





    posted on 2011-08-31 20:40 lanjh 閱讀(2712) 評論(1)  編輯  收藏 所屬分類: Java Web

    評論

    # re: svn+ant+tomcat+hudson 持續構建WEB應用最佳實踐[未登錄]  回復  更多評論   

    I've just read your article and found it such a good guide for us to come to know CI~ Thanks for sharing~!
    2011-09-01 10:26 | GuoGuo
    主站蜘蛛池模板: 中国极品美軳免费观看| 另类图片亚洲校园小说区| 99久久婷婷免费国产综合精品| 四虎国产精品免费视| 亚洲色偷偷综合亚洲AV伊人蜜桃| 亚洲午夜成激人情在线影院| 99久久99热精品免费观看国产| 亚洲毛片免费观看| 99亚洲精品高清一二区| 18级成人毛片免费观看| 亚洲电影一区二区三区| 91人成网站色www免费下载| 亚洲国产精品成人精品小说| 性做久久久久久免费观看| 亚洲欧美一区二区三区日产| 日韩在线天堂免费观看| 老司机免费午夜精品视频| 亚洲国产精品第一区二区三区| 亚洲大香人伊一本线| 免费AA片少妇人AA片直播| 亚洲欧美aⅴ在线资源| 日韩精品电影一区亚洲| 日本三级在线观看免费| 亚洲精品国产情侣av在线| 韩国免费三片在线视频| 成人网站免费大全日韩国产| 久久精品国产亚洲AV高清热| 无码视频免费一区二三区 | 3d动漫精品啪啪一区二区免费| 日本19禁啪啪无遮挡免费动图| 久久伊人久久亚洲综合| 蜜臀AV免费一区二区三区| 国产 亚洲 中文在线 字幕| 免费一级e一片在线播放| 在线涩涩免费观看国产精品| 亚洲最大在线观看| 日韩精品成人亚洲专区| 日韩精品人妻系列无码专区免费| 亚洲精品夜夜夜妓女网| 日韩吃奶摸下AA片免费观看| 九九热久久免费视频|