SpringBoot打包jar包並後臺運行

最近又進步了。我一直習慣直接在Intellij Idea中直接運行寫好的程序,不過也是因爲僅僅是寫個模擬接口而已。後來到新公司要負責java後臺,開始習慣把項目部署到外部Tomcat去測試,或者打成war包讓運維去linux上面部署。不過,想來這也是因爲只是在做一個目前看起來並不是很重要的項目而已。如果同時做的項目多了,好像自己的做法就不好了。

老大最近點醒了我,原來SpringBoot是可以打包成jar包,而不依賴容器就可以運行的。我立即進行了研究和嘗試,分別在win7和ubuntu上面進行了測試,終於達到效果。

一、首先,必須做好一個運行流暢沒有毛病的項目。

二、修改pom文件的開頭部分:


packaging本來就是jar,我的項目因爲不明白這個作用被我改成war了。

三、在application.properties中加入server.port=9090,端口號自己要改一下,別和其他的衝突,建議有文案設置,給一個項目規定一個端口號。因爲jar包部署之後是一個項目獨佔一個容器。調用的時候項目名被隱藏了。

四、在Idea下方的Terminal或者命令行定位到項目文件夾,運行:mvn clean package命令。

有資料說clean前面有個-,結果大半天我沒弄出來。後來回家研究發現老提"lean"出錯,於是我就寫成mvn -cclean package運行,結果還成了。網上很多資料是沒有-的。

前提是要另外安裝maven。

提示一下,這裏最容易出錯:

1.網上很多資料在解釋這裏的問題的時候都去修改pom,加了很多什麼東西。後來發現根本不需要,容易出現包不能下載的error,不僅如此,pom中有些提示出錯的包還要刪去。命令行後面加-e可以打印異常提示。

2.我在項目中寫了單元測試,有三個方法,其中有一個方法運行會出錯,平時用war部署發現不了問題,打jar包好像一個個都要運行一遍,結果我的一個單元測試方法出問題就不能打包成功,刪除就好了。


可以看到jar包的位置在target文件夾下面。

五、部署

win7和linux是一樣的。把jar包上傳到linux,規劃一個文件夾。將命令行定位到該文件夾下,運行命令(win7和linux一樣):

java -jar yuedaoapi-1.0.0.jar

就這樣,jar包就部署好了。試着調用一下,沒有任何問題。

不過如果要在後臺調用,需要運行:

java -jar yuedaoapi-1.0.0.jar > log_yuedaoapi.file 2>&1 &


這個方法在linux沒有問題,在win7中沒有成功。命令行窗口關閉服務就終止了。

如果要關掉後臺運行的服務,釋放被佔用的端口。就要記住運行成功後給出的進程pid,比如上面圖中的2637

用kill -9 2637就可以殺死。

如果不小心忘記了記錄這個pid,可以用以下兩種方式都可以找到進程,看到pid

netstat -ap|grep 9090

lsof -i:9090


這時候再kill就好了。

看一下調用效果:


看得出來效果不錯,項目名稱被隱藏了。我的Idea終於被解放了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章