1. 程式人生 > >Linux環境利用SVN+Maven+Tomcat自動釋出專案工程

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測試時,生產釋出時得中規中矩的來了);

結束,謝謝.. ...