SpringBoot瘦身打包部署的實現(xiàn)
一、前言
最近做的項目由于引入第三方庫導(dǎo)致在運行mvn clean package 打jar時,編譯出來的 Jar 包很大(服務(wù)器多達500MB)。
二、瘦身前的Jar包
SpringBoot編譯出來的Jar包中,磁盤占用大的,是一些外部依賴庫(jar包),例如:
進入項目工程根目錄,執(zhí)行 mvn clean package命令,得到的Jar包目錄結(jié)構(gòu)如下:


整個Jar包 524 MB(可以通過解壓軟件查看,會發(fā)現(xiàn)基本都是lib下的依賴包占用)
三、解決方法
步驟1: 正常編譯JAR包,解壓出lib文件夾
POM文件如下:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
進入項目根目錄,執(zhí)行命令: mvn clean package
將編譯后的Jar包解壓,拷貝 BOOT-INF 目錄下的lib文件夾 到目標路徑;
步驟2: 修改pom.xml配置,編譯出不帶 lib 文件夾的Jar包
<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> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
配置完成后,再次執(zhí)行編譯:mvn clean package
生成的 Jar 包體積明顯變小(還有175KB),如下所示, 外部的 jar 包已經(jīng)不會被引入了:

步驟3: 運行編譯后的Jar包
將 步驟1 解壓出來的lib文件夾、步驟2編譯的jar包放在同一個目錄, 運行下面命令:
java -Dloader.path=/path/to/lib -jar /path/to/springboot-jsp-0.0.1-SNAPSHOT.jar
備注:
- 將/path/to/改成實際的路徑。
- -Dloader.path=lib文件夾路徑
最終目錄文件結(jié)構(gòu)是:
├── lib #lib文件夾 └── springboot-jsp-0.0.1-SNAPSHOT.jar
說明
1、通常,一個工程項目架構(gòu)確定后,引入的jar包基本上不會變,改變的大部分是業(yè)務(wù)邏輯;
2、后面如果需要變更業(yè)務(wù)邏輯,只需要輕量地編譯工程,大大提高項目部署的效率。
四、特殊處理
1、以上步驟打包去除所有依賴包,如果想引入內(nèi)部編譯的依賴包可以通過includes屬性進行添加,利用引用了內(nèi)部的dubbo可以通過如下配置

配置完成后,再次執(zhí)行編譯:mvn clean package
結(jié)構(gòu)如下:

2、如果引入內(nèi)部包過多,也可以通過excludeGroupIds屬性去掉不變的依賴包。

到此這篇關(guān)于SpringBoot瘦身打包部署的實現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot瘦身打包部署內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何在java文件中設(shè)置文字顏色:setTextColor()
這篇文章主要介紹了如何在java文件中設(shè)置文字顏色:setTextColor(),文末補充介紹了在java代碼中設(shè)置字體顏色方法總結(jié),結(jié)合實例代碼介紹的非常詳細,需要的朋友可以參考下2023-09-09
Mybatis日期格式自動轉(zhuǎn)換需要用到的兩個注解說明
這篇文章主要介紹了Mybatis日期格式自動轉(zhuǎn)換需要用到的兩個注解說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
GC調(diào)優(yōu)實戰(zhàn)之過早提升Premature?Promotion
這篇文章主要為大家介紹了GC調(diào)優(yōu)實戰(zhàn)之過早提升Premature?Promotion2022-01-01
在springboot中如何使用filter設(shè)置要排除的URL
這篇文章主要介紹了在springboot中如何使用filter設(shè)置要排除的URL,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12
Java設(shè)計模式之解釋器模式_動力節(jié)點Java學(xué)院整理
解釋器模式是一個比較少用的模式,本人之前也沒有用過這個模式。下面我們就來一起看一下解釋器模式2017-08-08
使用java + selenium + OpenCV破解網(wǎng)易易盾滑動驗證碼的示例
這篇文章主要介紹了使用java + selenium + OpenCV破解網(wǎng)易易盾滑動驗證碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02

