SpringBoot jar包大小優(yōu)化問(wèn)題及解決
這里提供兩種解決方案
- 清理 Maven 依賴(lài)中無(wú)用依賴(lài)( Unused declared dependencies )。
- 打包時(shí)排除所有 jar 依賴(lài)改為運(yùn)行時(shí)外部引用。
方案一:清理Maven依賴(lài)中無(wú)用依賴(lài)
可以使用 mvn dependency:analyze 命令對(duì)項(xiàng)目進(jìn)行分析,并以此作為參考來(lái)剔除無(wú)用依賴(lài)。
下面對(duì)圖中的 Used undeclared dependencies found 和 Unused declared dependencies found 作出解釋
Used undeclared dependencies found
意為項(xiàng)目中有些我們使用到的 jar 包依賴(lài)并沒(méi)有在 pom 文件中顯示聲明,這意味著這些包是通過(guò)引用傳遞 1 而來(lái)的。
這個(gè)時(shí)候我們可以選擇顯示聲明他們。
Unused declared dependencies found
意為項(xiàng)目中存在顯示聲明的依賴(lài)我們?cè)趯?shí)際的應(yīng)用中并沒(méi)有使用到。我們可以將他們從 pom 文件中剔除。
注意:
這里雖然說(shuō)實(shí)際代碼中沒(méi)有用到,但并不意味著一定沒(méi)有用到,這里只是說(shuō) main/java 和 test 中沒(méi)有使用到,具體剔除方案還需要自己衡量,這個(gè)結(jié)果只能作為參照。
方案二:外部引用 jar 包(立竿見(jiàn)影)
可有效縮減 jar 包大小,進(jìn)而解決 Jar 包太大引發(fā)的打包慢,上傳慢等問(wèn)題。
1. 將原本 jar 包解壓縮找到 BOOT-INF 下的 lib 目錄考出,該目錄下包含所需所有 jar包。
2. 在 pom 中 spring-boot-maven-plugin 打包插件設(shè)置打包時(shí)排除所有 jar 包
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> <layout>ZIP</layout> <includes> <include> <!-- 排除所有Jar --> <groupId>nothing</groupId> <artifactId>nothing</artifactId> </include> </includes> </configuration> </plugin>
此時(shí)打包,會(huì)發(fā)現(xiàn) jar 包大小銳減,將 jar 包與 lib 放在同一目錄下執(zhí)行命令
java -Dloader.path="lib/" -jar yourjarname.jar 即可。
引用傳遞意為:我們通過(guò) pom 文件聲明了依賴(lài)的 jar 包 A 同時(shí)包 A 引用了 jar 包 B 即 A.jar -> B.jar 此時(shí)我們可以直接使用 B包中的代碼但我們卻沒(méi)有顯示聲明引用 B包
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java:try...catch跳過(guò)異常繼續(xù)處理循環(huán)問(wèn)題
這篇文章主要介紹了java:try...catch跳過(guò)異常繼續(xù)處理循環(huán)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10詳解spring cloud config實(shí)現(xiàn)datasource的熱部署
這篇文章主要介紹了詳解spring cloud config實(shí)現(xiàn)datasource的熱部署,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01Java實(shí)現(xiàn)簡(jiǎn)單的飛機(jī)大戰(zhàn)游戲(敵機(jī)下落篇)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單的飛機(jī)大戰(zhàn)游戲,敵機(jī)下落篇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05Springboot+Vue+shiro實(shí)現(xiàn)前后端分離、權(quán)限控制的示例代碼
這篇文章主要介紹了Springboot+Vue+shiro實(shí)現(xiàn)前后端分離、權(quán)限控制的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07java日期格式化YYYY-MM-dd遇坑指南小結(jié)
本文主要介紹了java日期格式化YYYY-MM-dd遇坑指南小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08