1. 程式人生 > 實用技巧 >Spring Boot 專案jar包瘦身/lib資料夾匯出(分離)

Spring Boot 專案jar包瘦身/lib資料夾匯出(分離)

Spring Boot 專案jar包瘦身/lib資料夾匯出(分離)

因為專案依賴很少變動,而且每次傳阿里雲上,jar包大,速度慢...

所以,把xxx.jar裡面的lib檔案匯出,先放到到雲伺服器上,然後編譯不帶上依賴庫檔案

新多了依賴可以註釋<configuration>編譯來重來一遍

瘦身前,用一個解壓軟體,把打包好的完整jar檔案裡的lib拉出來

大概目錄是下/BOOT-INF/,可以看到一個lib資料夾` 就是要把這個lib拖出來,放到雲伺服器上,具體看jar放哪,這裡是同級哦

修改專案的pom.xml檔案

其中spring-boot-maven-plugin是一般都自帶的,在下面加個<configuration>

標籤,具體可以看程式碼,inluce→nothing就是都不包含進去

    <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!