日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

spring boot jar包_「Spring Boot 新特性」 jar 大小自动瘦身

發布時間:2023/12/4 javascript 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring boot jar包_「Spring Boot 新特性」 jar 大小自动瘦身 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

自動分析瘦身

Spring Boot 項目最終構建處理 JAR 包大小一直是個詬病,需要把所有依賴包內置最終輸出可運行的 jar。當然可以使用其他的插件擴展 實現依賴 JAR 和 可運行 jar 分離可以參考 slot-maven-plugin[1], 但此種方法治標不治本并不能減少原有依賴的 JAR 的大小。

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

效果展示

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

  • 使用 http://start.spring.io[2] 創建一個空的 Spring Boot 項目,注意不需要引入任何依賴
  • mvn clean install 構建出來相關可運行 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/
  • 統計依賴 jar 個數, 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 19cd demo-2.4.0/BOOT-INF/lib && ll -h | wc -l 18

什么是 empty starter

如上文所述,我們在基于 http://start.spring.io 創建項目的時候 已經默認引入了, 但在 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,只為批量導入其他 jar

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

自定義 jar 實現自動瘦身

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

參考資料

[1]

slot-maven-plugin: https://github.com/core-lib/slot-maven-plugin

[2]

start.spring.io: https://start.spring.io


來源:公眾號

喜歡的記得點關注哦!!!謝謝

總結

以上是生活随笔為你收集整理的spring boot jar包_「Spring Boot 新特性」 jar 大小自动瘦身的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。