<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 閱讀(2711) 評論(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
    主站蜘蛛池模板: 亚洲无砖砖区免费| 6080午夜一级毛片免费看6080夜福利| 亚洲一区二区成人| 亚洲国产av无码精品| 91免费精品国自产拍在线不卡| 东北美女野外bbwbbw免费 | 国产成人自产拍免费视频| 丁香婷婷亚洲六月综合色| 久久久综合亚洲色一区二区三区| 免费在线观看毛片| 免费看AV毛片一区二区三区| 16女性下面扒开无遮挡免费| 十八禁视频在线观看免费无码无遮挡骂过| 亚洲AⅤ男人的天堂在线观看 | 免费毛片a在线观看67194| 性xxxx视频免费播放直播| 中文字幕永久免费| 日本视频免费观看| 337p日本欧洲亚洲大胆人人| 亚洲香蕉久久一区二区| 亚洲国产韩国一区二区| 中文字幕亚洲色图| 亚洲人成电影福利在线播放| 亚洲av日韩综合一区在线观看| 伊人婷婷综合缴情亚洲五月| 亚洲av日韩片在线观看| 五月婷婷亚洲综合| 免费萌白酱国产一区二区| 日本不卡免费新一二三区| 成人免费视频软件网站| 成人黄18免费视频| 午夜寂寞在线一级观看免费| 成人性生交大片免费看午夜a| 成人免费午间影院在线观看| 成年女人色毛片免费看| 女人18毛片a级毛片免费| 18禁成年无码免费网站无遮挡| 老司机在线免费视频| 夜夜嘿视频免费看| 国产精品自在自线免费观看| 亚洲AV无码一区二三区|