Spring Boot 專案jar包瘦身/lib資料夾匯出(分離)
阿新 • • 發佈:2020-08-08
Spring Boot 專案jar包瘦身/lib資料夾匯出(分離)
因為專案依賴很少變動,而且每次傳阿里雲上,jar包大,速度慢...
所以,把xxx.jar裡面的lib檔案匯出,先放到到雲伺服器上,然後編譯不帶上依賴庫檔案
新多了依賴可以註釋<configuration>
編譯來重來一遍
瘦身前,用一個解壓軟體,把打包好的完整jar檔案裡的lib拉出來
大概目錄是下/BOOT-INF/
,可以看到一個lib
資料夾` 就是要把這個lib拖出來,放到雲伺服器上,具體看jar放哪,這裡是同級哦
修改專案的pom.xml
檔案
其中spring-boot-maven-plugin
是一般都自帶的,在下面加個<configuration>
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <layout>ZIP</layout> <includes> <include> <groupId>nothing</groupId> <artifactId>nothing</artifactId> </include> </includes> </configuration> </plugin> </plugins> </build>
編譯jar包前先clean
一波,然後再次編譯(可以檢查下jar包大小)
把瘦身後的jar包拖到lib同級目錄(總之放一起,執行的命令可以短一點)
執行指令 重要的地方就是-Dloader.path=lib
指定依賴庫的位置
-
nohup java -Dloader.path=lib -jar english-bbs-0.1.jar & # 這是後臺不掛斷執行,並且把輸出定向到
nohup.out
-
├── lib # lib資料夾
├── nohup.out # 專案執行的輸入
└── xxxx-0.0.1-SNAPSHOT.jar
TODO 指令還是有點長,等學完shell寫個執行指令碼提高下效率
需求:關閉之前正在執行中的專案 執行專案 輸出執行結果
參考程式碼: 老早前看到的 不記得出處了
#!/usr/bin/env bash
#!/bin/sh
RESOURCE_NAME=ying-0.0.1-SNAPSHOT.jar
tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Stop Process...'
kill -15 $tpid
fi
sleep 5
tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Kill Process!'
kill -9 $tpid
else
echo 'Stop Success!'
fi
tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'App is running.'
else
echo 'App is NOT running.'
fi
rm -f tpid
nohup java -jar ./$RESOURCE_NAME & tail -f nohup.out
echo $! > tpid
echo Start Success!