1. 程式人生 > >eclipse+fileSyncPlugin+svn+jenkins+tomcat

eclipse+fileSyncPlugin+svn+jenkins+tomcat

log ogr pac eclipse 選擇 edi out line 安裝jenkins

  實現一個想法,把項目部署在linux服務器上,在本地的eclipse代碼更新後,通過svn+jenkins自動同步到服務器,

然後通過eclipse遠程debug項目。這樣是不是就解決了在本地跑項目,導致電腦變卡的問題技術分享技術分享技術分享技術分享技術分享技術分享技術分享技術分享技術分享技術分享…………^o^

  實現思路 : 本地項目——>本地同步文件夾——>svn服務器——>jenkins進行項目構建——>重啟tomcat

  好了,不多說了,不嫌麻煩的童鞋可以試一試……

  

  環境準備

  (1) 在eclipse中安裝fileSyncPlugin插件

    具體安裝參考 : http://andrei.gmxhome.de/filesync/examples.html

  (2) 在服務器上配置svn資源庫

    具體參考 :http://www.cnblogs.com/Vince-blogs/p/7477199.html

  (3) 在服務器上安裝jenkins

    去jenkins官網安裝war包,放到服務器上tomcat的webapps目錄裏面

  

  配置 :

  (1) 把你的項目拷貝到另外的一個目錄,把目錄上傳到svn

  (2) 在eclipse中的fileSyncPlugin插件安裝好之後,右鍵點擊你的項目,選擇Properties

    然後點擊File synchronization,然後Add Folder選擇你項目要更新的文件夾,

    目的文件夾選擇上邊步驟的文件夾

  (3) 配置jenkins,我創建了兩個構建item。一個用來執行更新服務器tomcat中的class、配置文件,此操作需要重啟tomcat;

    一個用來更新 jsp,js,style文件等,不需要重啟服務器中的tomcat。

    --------多圖預警--------

    其中更新並重啟tomcat的item配置如下

技術分享

    具體配置如下,僅供參考 :

技術分享

    技術分享

技術分享

    其中,shell腳本shutdown.sh執行操作的是關閉tomcat,清除緩存,具體如下

#!/bin/bash
program=tomcat-web
sn=`ps -ef | grep $program | grep -v grep |awk {print $2}`  #獲得進程端口號
if [ "${sn}" != "" ];    #如果為空,表示進程未啟動
        then
                echo "${sn}"
                kill -9 $sn
                #sudo -u tomcat /usr/local/apache/tomcat-web/bin/shutdown.sh
fi
tempFRDBase="/home/vince/tomcat-web/work/Catalina/localhost/WebSocketTest/"
if [ -d "$tempFRDBase" ];
        then
             rm -rf "$tempFRDBase"
fi

    Ant腳本如下

<?xml version="1.0" encoding="UTF-8" ?>

<project name="XXXXX" default="noRestartDeploy" basedir=".">

    <echo message="prepare for work -----" />
    
    <!--  定義 項目名稱  -->
    <property name="project.name" value="XXXXX" />
    <!--  定義 web 容器的部署路徑  -->
    <property name="localWebServer.home" value="/home/vince/tomcat-web" />
    <!--  定義 文件輸出路徑  -->
    <property name="outFileDir" value="${localWebServer.home}/webapps" />

    <!-- 初始化刪除classes文件 -->  
    <target name="restartInit">
        <echo message=" ====== 初始化 ======" />
        <echo message=" ====== 刪除tomcat項目class文件,路徑 : ${outFileDir}/${project.name}/WEB-INF/classes/com ======" />
        <delete dir="${outFileDir}/${project.name}/WEB-INF/classes/com" />
    </target>

    <!-- 初始化刪除操作 -->  
    <!-- 具體的刪除操作視要更新的目錄而定 --> 
    <target name="noRestartInit">
        <echo message=" ====== 初始化 ======" />
        <echo message=" ====== 刪除要更新的內容(1) :${outFileDir}/${project.name}/js  ======" />
        <delete dir="${outFileDir}/${project.name}/js" />
        <echo message=" ====== 刪除要更新的內容(2) :${outFileDir}/${project.name}/styles  ======" />
        <delete dir="${outFileDir}/${project.name}/styles" />
        <echo message=" ====== 刪除要更新的內容(3) :${outFileDir}/${project.name}/WEB-INF/views  ======" />
        <delete dir="${outFileDir}/${project.name}/WEB-INF/views" />
    </target>
    
    <!-- 更新class源文件 -->
    <target name="restartDeploy" depends="restartInit">
        <echo message=" ====== 更新源碼 ======" />
        <mkdir dir="${outFileDir}/${project.name}/WEB-INF/classes/com" />
        <copy todir="${outFileDir}/${project.name}/WEB-INF/classes/com" overwrite="true">
            <fileset dir="./com" />
        </copy>
        <echo message=" ====== 代碼更新完成,準備重啟tomcat ======" />
    </target>

    <!-- 不重啟,更新非classes文件  -->  
    <target name="noRestartDeploy" depends="noRestartInit">
        <echo message=" ====== 更新代碼 ======" />
        <mkdir dir="${outFileDir}/${project.name}/js" />
        <mkdir dir="${outFileDir}/${project.name}/styles" />
        <mkdir dir="${outFileDir}/${project.name}/WEB-INF/views" />
        <copy todir="${outFileDir}/${project.name}/js" overwrite="true">
            <fileset dir="./js" />
        </copy>
        <copy todir="${outFileDir}/${project.name}/styles" overwrite="true">
            <fileset dir="./styles" />
        </copy>
        <copy todir="${outFileDir}/${project.name}/WEB-INF/views" overwrite="true">
            <fileset dir="./WEB-INF/views" />
        </copy>
        <echo message=" ====== 代碼更新完成 ======" />
    </target>

</project>

  配置結束。(具體配置要視具體情況而定……^O^)  

  代碼編寫完成後,需要在本地的同步文件夾提交代碼到svn,然後使用jenkins構建項目

  這樣一來,eclipse就僅僅當做編輯器來用了,調試程序的話可用eclipse的遠程debug(具體參考 : http://www.cnblogs.com/Vince-blogs/p/7497011.html)

  

  THE END.

  

  

  

  

eclipse+fileSyncPlugin+svn+jenkins+tomcat