一、概述
在實際開發中,我們寫好的代碼,往往打成war包或jar包,通過winscp或其他軟件將其上傳至服務器,然而這樣非常大的一個弊端就是不利於開發,為什么這么說呢?假如我們剛剛將springboot項目達jar包通過winscp部署在linux系統中,然而各種突如其來、意想不到的bug接踵而來,你在本地測試調試bug,難道你要一次又一次的打jar包,上傳至服務器?我想你會瘋了吧,哈哈,言歸正傳。
運行java項目的本質,就是讓jvm運行.class文件(純屬個人理解,意思你懂就好),所以我們為何不嘗試直接將本地classes目錄與服務器關聯呢,這樣直接上傳我們調試修改的.class文件即可,而強大的IDEA工具可以幫我們將本地classes文件與服務器的classes關聯映射,這樣更是方便了我們開發。這里可以參考:IDEA自動部署WEB工程至遠程服務器(學習筆記)將本地classes關聯映射服務器的對應目錄。
二、測試准備
①使用IDEA將本地class與遠程服務器的classes目錄做關聯映射(IDEA自動部署WEB工程至遠程服務器(學習筆記))
②編寫shell腳本運行java程序
三、正式測試
服務器端做如下規划:
客戶端IDEA只需要配置好目錄關聯映射即可:(IDEA自動部署WEB工程至遠程服務器(學習筆記))當然,也可以通過手動將本地classes、依賴包lib
①准備對應目錄
②准備SpringBoot項目
③本地classes目錄與服務器的目錄做關聯映射
第一步:按照如下步驟配置
第二步:
第三步:
第四步:
最后一步:將整個classes目錄上傳至服務器
④上傳工程依賴lib至對應的文件
⑤編寫shell腳本啟動該程序

#!/bin/bash
#測試程序 運行腳本
#jdk路徑
JAVA_HOME="/home/software/jdk1.8"
#項目的根目錄
APP_HOME="/home/app/test"
#pid的輸出目錄
PIDFILE="${APP_HOME}/Application.pid"
#指定class目錄
CLASSPATH=$APP_HOME/bin
for i in $APP_HOME/lib/*.jar;do
CLASSPATH="$CLASSPATH":"$i"
done
echo ${CLASSPATH}
MAINCLASS="com.test.demo.DemoApplication"
#后台運行程序
#nohup $JAVA_HOME/bin/java -classpath $CLASSPATH $MAINCLASS&
#運行java程序
$JAVA_HOME/bin/java -classpath $CLASSPATH $MAINCLASS
#將進程id寫入文件
ps -ef | grep "Application" |grep -v grep|awk '{print $2}'>${PIDFILE}
⑥通過shell腳本啟動該程序:sh start.sh
⑦通過瀏覽器訪問:192.168.229.128:8080/test?name=張三(這里確保服務器的8080端口開放)
當我們添加某個類或者修改某個些配置文件的時候,無需進行重新打包、上傳服務器等這么麻煩的步驟了,我們只需將添加的class通過IDEA上傳即可完成快速部署!
例如:我們新增一個類:TestController,只需要將對應的class提交至服務器即可完成部署!
將對應class提交至服務器!
至此,我們通過shell腳本運行java程序已經完成!