「SpringBoot2.4新特性」jar自動瘦身

自動分析瘦身

Spring Boot 項目最終構(gòu)建處理 JAR 包大小一直是個詬病摇邦,需要把所有依賴包內(nèi)置最終輸出可運行的 jar奉瘤。 當(dāng)然可以使用其他的插件擴(kuò)展 實現(xiàn)依賴 JAR 和 可運行 jar 分離可以參考 slot-maven-plugin, 但此種方法治標(biāo)不治本并不能減少原有依賴的 JAR 的大小。

Spring Boot 2.4 提供對構(gòu)建輸出 JAR 分析自動瘦身的功能句旱,自動在構(gòu)建輸出可運行 JAR 時刪除 empty starter dependencies

效果展示

先來分別基于 Spring Boot 2.4.0 和 Spring Boot 2.3.6 來構(gòu)建一個可運行的 jar 幸撕,再來聊什么是 empty starter

  • 使用 start.spring.io 創(chuàng)建一個空的 Spring Boot 項目打月,注意不需要引入任何依賴
  • mvn clean install 構(gòu)建出來相關(guān)可運行 jar
  • 分別解壓兩個 jar 到兩個不同的目錄
tar -zxvf demo-2.3.6.jar -C demo-2.3.6/

tar -zxvf demo-2.4.0.jar -C demo-2.4.0/
  • 統(tǒng)計依賴 jar 個數(shù), 2.3.6 共計 19 個 依賴 jar 而 2.4.0 只有 18 個依賴 jar ,缺少了 spring-boot-starter.jar
cd demo-2.3.6/BOOT-INF/lib && ll -h | wc -l
19

cd demo-2.4.0/BOOT-INF/lib && ll -h | wc -l
18

什么是 empty starter

如上文所述,我們在基于 start.spring.io 創(chuàng)建項目的時候 已經(jīng)默認(rèn)引入了, 但在 Spring Boot 2.4 中會自動刪除此類 empty starter dependencies jar

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
    </dependency>

我們來看一下 spring-boot-stater 有什么特殊性湿硝?

  • ① 空 jar 不包含任何代碼
  • ② 有引用其他 jar,只為批量導(dǎo)入其他 jar

所以此類型 jar 在構(gòu)建成可運行 jar 時并未實際意義闰蛔,因為批量導(dǎo)入的依賴 jar 都可以被引入。目前 spring boot 提供的 redis图柏、amqp等大部分 starter 均是此類 jar,所以在構(gòu)建后會自動刪除序六。

自定義 jar 實現(xiàn)自動瘦身

  • 創(chuàng)建 MANIFEST.MF jar 包元信息,添加一行 Spring-Boot-Jar-Type: dependencies-starter 即可
resources
     ├── META-INF
         └── MANIFEST.MF

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蚤吹,一起剝皮案震驚了整個濱河市例诀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌裁着,老刑警劉巖繁涂,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異二驰,居然都是意外死亡扔罪,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進(jìn)店門桶雀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來矿酵,“玉大人唬复,你說我怎么就攤上這事∪梗” “怎么了敞咧?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長辜腺。 經(jīng)常有香客問我休建,道長,這世上最難降的妖魔是什么评疗? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任测砂,我火速辦了婚禮,結(jié)果婚禮上百匆,老公的妹妹穿的比我還像新娘邑彪。我一直安慰自己,他們只是感情好胧华,可當(dāng)我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布寄症。 她就那樣靜靜地躺著,像睡著了一般矩动。 火紅的嫁衣襯著肌膚如雪有巧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天悲没,我揣著相機與錄音篮迎,去河邊找鬼。 笑死示姿,一個胖子當(dāng)著我的面吹牛甜橱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播栈戳,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼岂傲,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了子檀?” 一聲冷哼從身側(cè)響起镊掖,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎褂痰,沒想到半個月后亩进,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡缩歪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年归薛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡主籍,死狀恐怖习贫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情崇猫,我是刑警寧澤沈条,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布需忿,位于F島的核電站诅炉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏告组。R本人自食惡果不足惜挪鹏,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一区赵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧议纯,春花似錦、人聲如沸溢谤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽世杀。三九已至阀参,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瞻坝,已是汗流浹背蛛壳。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留所刀,地道東北人衙荐。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像浮创,于是被迫代替她去往敵國和親忧吟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容