Linux環境利用SVN+Maven+Tomcat自動釋出專案工程
目的:自動將工程編譯打包併發布到Tomcat伺服器
使用軟體:JDK7 + MAVEN + SVN + TOMCAT (請提前準備好以上軟體)
步驟:
1)配置JDK環境(詳細步驟可自己百度下,本人暫未準備,後續會更新... ...)
2)配置MAVEN環境(詳細請參考本人的另一篇文章:Linux系統MAVEN環境搭建)
3)配置SVN伺服器(詳細請參考本人的另一篇文章:Linux系統SVN伺服器搭建)
4)上傳Tomcat伺服器包並解壓縮
本人的路徑為: /usr/local/tomcat8
解壓縮命令 : tar -xvf apache-tomcat-8.5.32.tar.gz 即會解壓到當前目錄中,如下圖:
以上基礎準備工作完成後 下面開始具體的操作 (兩種釋出方式,可憑自己愛好)
第一種:將工程war包直接釋出到Tomcat伺服器的webapps目錄下
a)將Maven工程(注意:必須是Maven工程)程式碼檢出到指定目錄:
本人目錄為: /usr/local/src/maven/ltest (可自己設定)
從SVN檢出命令為: svn co svn專案地址(自己的SVN工程地址)
如:svn co svn://www.baidu.com/tst/ltest
b)將工程檢出後 將下面指令碼放入一個文字中 並修改為 publish.sh:並賦上可執行許可權 chmod +x publish.sh
#!/bin/sh #定義變數 date=$(date "+%Y%m%d") datetime=$(date "+%Y%m%d%H%M%S") echo ">>>>>>>>>>>>>>>>> 執行開始(${datetime}) >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" context="ltest" echo "[日誌]專案名稱:"${context} >>${context}.log server_publish_path="usr/local/src/maven" echo "[日誌]工程目錄:"${server_publish_path} >>${context}.log server_tomcat_path="/usr/local/tomcat8/apache-tomcat-8.5.32" echo "[日誌]Tomcat伺服器目錄:"${server_tomcat_path} >>${context}.log echo "[日誌]進入工程所在目錄:"/${server_publish_path}/${context} >>${context}.log cd /${server_publish_path}/${context} echo /${server_publish_path}/${context} >>${context}.log echo "[日誌]從SVN伺服器提取最新程式碼 >>>>>>>>>>>>>>>>>>>>>>>>" >>${context}.log svn up echo svn up >>${context}.log echo "[日誌]使用MVN命令編譯並生成釋出包 >>>>>>>>>>>>>>>>>>>>>>>>" >>${context}.log mvn -U clean install echo -U clean install >>${context}.log echo "[日誌]stop Tomcat >>>>>>>>>>>>>>>>>>>>>>>>" >>${context}.log ${server_tomcat_path}/bin/catalina.sh stop echo ${server_tomcat_path}/bin/catalina.sh stop >>${context}.log echo "[日誌]等待10秒鐘 >>>>>>>>>>>>>>>>>>>>>>>>" >>${context}.log sleep 10s echo "[日誌]將原有釋出檔案重新命名 >>>>>>>>>>>>>>>>>>>>>>>>" >>${context}.log mv /${server_tomcat_path}/webapps/${context} ${server_tomcat_path}/webapps/${context}${datetime} echo mv /${server_tomcat_path}/webapps/${context} ${server_tomcat_path}/webapps/${context}${datetime} >>${context}.log rm -rf ${server_tomcat_path}/webapps/${context}.war echo -rf ${server_tomcat_path}/webapps/${context}.war >>${context}.log cp /${server_publish_path}/${context}/target/framework-1.0.1.war ${server_tomcat_path}/webapps/${context}.war echo cp /${server_publish_path}/${context}/target/framework-1.0.1.war ${server_tomcat_path}/webapps/${context}.war >>${context}.log echo "[日誌]start tomcat >>>>>>>>>>>>>>>>>>>>>>>>" >>${context}.log ${server_tomcat_path}/bin/catalina.sh start echo ${server_tomcat_path}/bin/catalina.sh start >>${context}.log echo "[日誌]檢視啟動日誌 >>>>>>>>>>>>>>>>>>>>>>>>" >>${context}.log tail -f /${server_publish_path}/logs/catalina.out echo tail -f /${server_publish_path}/logs/catalina.out >>${context}.log echo ">>>>>>>>>>>>>>>>> 本次結束 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
c)將指令碼上傳到Linux伺服器中 執行 ./publish.sh 即可
d)結果:通過Maven命令自動編譯並打包成一個 .war部署包,該包生成後會被複制到 tomcat伺服器中的 webapps目錄中,每次釋出會保留上次釋出歷史,在瀏覽器上訪問工程即可,如: localhost:8080/ltest
第二種:將工程war包以軟連結形式釋出到Tomcat伺服器的webapps目錄下
步驟與上面基本上類似,但是需要在Tomcat伺服器 /conf/context.xml 檔案新增一段程式碼
<Resources allowLinking="true" />
如下圖:
將以上的shell指令碼略作修改,即:
將上面shell指令碼中的如下程式碼
cp /${server_publish_path}/${context}/target/framework-1.0.1.war ${server_tomcat_path}/webapps/${context}.war
修改為如下程式碼
ln -s /${server_publish_path}/${context}/target/framework-1.0.1.war ${server_tomcat_path}/webapps/${context}.war
即可;
二者比較嘛,第一種略中規中矩,第二種節省一些空間 省心;
本人比較推薦使用第二種(當然這種在SIT/UAT測試時,生產釋出時得中規中矩的來了);
結束,謝謝.. ...