SpringBoot瘦身打包部署的實(shí)現(xiàn)
一、前言
最近做的項(xiàng)目由于引入第三方庫導(dǎo)致在運(yùn)行mvn clean package 打jar時,編譯出來的 Jar 包很大(服務(wù)器多達(dá)500MB)。
二、瘦身前的Jar包
SpringBoot編譯出來的Jar包中,磁盤占用大的,是一些外部依賴庫(jar包),例如:
進(jìn)入項(xiàng)目工程根目錄,執(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>
進(jìn)入項(xiàng)目根目錄,執(zhí)行命令: mvn clean package
將編譯后的Jar包解壓,拷貝 BOOT-INF 目錄下的lib文件夾 到目標(biāo)路徑;
步驟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: 運(yùn)行編譯后的Jar包
將 步驟1 解壓出來的lib文件夾、步驟2編譯的jar包放在同一個目錄, 運(yùn)行下面命令:
java -Dloader.path=/path/to/lib -jar /path/to/springboot-jsp-0.0.1-SNAPSHOT.jar
備注:
- 將/path/to/改成實(shí)際的路徑。
- -Dloader.path=lib文件夾路徑
最終目錄文件結(jié)構(gòu)是:
├── lib #lib文件夾 └── springboot-jsp-0.0.1-SNAPSHOT.jar
說明
1、通常,一個工程項(xiàng)目架構(gòu)確定后,引入的jar包基本上不會變,改變的大部分是業(yè)務(wù)邏輯;
2、后面如果需要變更業(yè)務(wù)邏輯,只需要輕量地編譯工程,大大提高項(xiàng)目部署的效率。
四、特殊處理
1、以上步驟打包去除所有依賴包,如果想引入內(nèi)部編譯的依賴包可以通過includes屬性進(jìn)行添加,利用引用了內(nèi)部的dubbo可以通過如下配置
配置完成后,再次執(zhí)行編譯:mvn clean package
結(jié)構(gòu)如下:
2、如果引入內(nèi)部包過多,也可以通過excludeGroupIds屬性去掉不變的依賴包。
到此這篇關(guān)于SpringBoot瘦身打包部署的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot瘦身打包部署內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot打成jar包瘦身方法總結(jié)
- 使用springboot 打包插件去除jar包瘦身
- SpringBoot項(xiàng)目Jar包如何瘦身部署的實(shí)現(xiàn)
- SpringBoot之瘦身部署的詳細(xì)步驟
- 詳解SpringBoot迭代發(fā)布JAR瘦身配置
- Springboot 使用maven release插件執(zhí)行版本管理及打包操作
- 解決IDEA springboot"spring-boot-maven-plugin"報(bào)紅問題
- IDEA使用Gradle構(gòu)建SpringBoot項(xiàng)目工程的詳細(xì)教程
- SpringBoot?項(xiàng)目瘦身maven/gradle詳解
相關(guān)文章
Spring Security如何在Servlet中執(zhí)行
這篇文章主要介紹了Spring Security如何在Servlet中執(zhí)行,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-04-04Spring Boot使用過濾器和攔截器分別實(shí)現(xiàn)REST接口簡易安全認(rèn)證示例代碼詳解
這篇文章主要介紹了Spring Boot使用過濾器和攔截器分別實(shí)現(xiàn)REST接口簡易安全認(rèn)證示例代碼,通過開發(fā)實(shí)踐,理解過濾器和攔截器的工作原理,需要的朋友可以參考下2018-06-06淺談Java變量賦值運(yùn)算符及相關(guān)實(shí)例
這篇文章主要介紹了Java賦值運(yùn)算符的一些知識,需要的朋友可以參考下。2017-09-09Java EasyExcel讀寫excel如何解決poi讀取大文件內(nèi)存溢出問題
這篇文章主要介紹了Java EasyExcel讀寫excel如何解決poi讀取大文件內(nèi)存溢出問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06java中@JSONField和@JsonProperty注解的使用說明及對比
@JSONField與@JsonProperty隸屬兩個不同的包,前者是阿里系的fastjson包,后者是spring?boot官方使用的jackson包,本文主要介紹了java中@JSONField和@JsonProperty注解的使用說明及對比,感興趣的可以了解一下2023-11-11