背景:記錄在linux環境下部署jar程序的過程java
這裏的main函數就在DemRest2.java 文件中。linux
爲了部署方便,要作到如下兩點:web
1 在導出的jar包中不包含依賴的jar文件shell
2 程序用到的配置文件可讓用戶進行自定義 ,不將其放在jar包中。編程
這裏導出普通的jar包便可。爲了方便傳輸,只導出必須的程序文件。vim
在jar包導出後,進入導出的jar包中,將配置文件tws.properties文件刪除。windows
將全部須要的jar包放在lib目錄下面,包括咱們導出工程的jar包tws-client-demo.jartomcat
在用戶自定義目錄中,放置運行腳本和配置文件。bash
ps:運行腳本所在的目錄,就至關於程序運行的根目錄,全部的配置文件和運行腳本放置在同一目錄便可。app
這裏程序中怎麼讀取配置文件,還須要好好研究。。。。。。。
#!/bin/sh sourceMsgPath=/home/tws/server/tws-test/userMsg/lxw/ source /etc/profile for i in $HOME/server/tws-test/lib/*; do CLASSPATH=$i:"$CLASSPATH"; done export CLASSPATH=.:${CLASSPATH} java demo.rest.DemRest2 $sourceMsgPath$1 echo "Success!"
對照以上腳本進行解釋:
運行程序:
在用戶目錄下面,程序可以讀到jar包外部的配置文件。
在網上找的一個腳本範例:
在編寫shell腳本出現錯誤時候,能夠做爲參考:
#! /bin/sh export JAVA_HOME=/usr/java/jdk1.6.0_18 export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar for i in lib/*.jar; do CLASSPATH=$i:${CLASSPATH} done export CLASSPATH=.:${CLASSPATH} java -cp ${CLASSPATH} main方法所在包名.main方法所在的類名
若是上述腳本不能順利執行,能夠嘗試
#!/bin/bash後追加 source /etc/profile source ~/.bash_profile
測試下。。
問題:經過ftp傳輸工具在windows下編輯的腳本,在執行的時候會出現no such file or directory狀況。
是由於平臺不一樣致使的。執行下列命令便可
INUX下SHELL編程腳本沒法執行,提示no such file or directory.
sudo vim xx.sh
:set ff=unix
:wq
就OK了
(若是是在windows裏寫的腳本,你輸入:set ff 應該顯示的是DOS)
#!/bin/bash #war包上傳臨時目錄 warPath=/usr/local/tmp-tms #tomcat中webapps中文件 service_webapps=/usr/local/service-tomcat7/webapps web_webapps=/usr/local/web-tomcat7/webapps #待替換的配置文件 from_service_config=$warPath/224-service to_service_config=$service_webapps/tms_service/WEB-INF/classes from_web_config=$warPath/224-web to_web_config=$web_webapps/tms/WEB-INF/classes deployService(){ #清空tomcat webapps下的文件 rm -rf $service_webapps/* echo "完成臨時目錄的清理:$service_webapps" #移動war文件到webappps目錄 mv $warPath/tms_service.war $service_webapps echo "完成war文件的移動:$service_webapps/tms_service.war" #解壓war包 cd $service_webapps unzip tms_service.war -d tms_service echo "完成war文件解壓:$service_webapps/tms_service.war" #替換war中的配置文件 cp $from_service_config/log4j.properties $to_service_config/log4j.properties cp $from_service_config/resources.properties $to_service_config/resources.properties cp $from_service_config/service.xml $to_service_config/service.xml echo "完成Service工程配置文件的替換!" } deployWeb(){ #清空tomcat webapps下的文件 rm -rf $web_webapps/* echo "完成臨時目錄的清理:$web_webapps" #移動war文件到webappps目錄 mv $warPath/tms.war $web_webapps echo "完成war文件的移動:$web_webapps/tms.war" #解壓war包 cd $web_webapps unzip tms.war -d tms echo "完成war文件解壓:$web_webapps/tms.war" #替換war中的配置文件 cp $from_web_config/log4j.properties $to_web_config/log4j.properties cp $from_web_config/service.xml $to_web_config/service.xml cp $from_web_config/tms.properties $to_web_config/tms.properties echo "完成web工程配置文件的替換!" } ##############腳本入口 #./deploy.sh service ---只部署service #./deploy.sh web ---只部署web #./deploy.sh both ---同時部署service和web if [ $1 == "service" ] then deployService echo "只部署service,successful" elif [ $1 == "web" ] then deployWeb echo "只部署web,successful" elif [ $1 == "both" ] then deployService sleep 10 deployWeb echo "同時部署service和web,successful!" else echo "請輸入一個正確參數:service web both" fi
用到啥就去查什麼,一切都不是困難,態度決定成效!!!!