Spring boot項目由於使用了太多依賴包,導致jar包過大,下面使用Spring boot ProperitiesLauncher加載器,從外部指定路徑加載三方依賴jar包,達到項目jar包瘦身的目的
Spring boot jar包瘦身的便利性
將三方依賴jar包從打包的項目中移除有如下好處
- 縮減項目jar包大小,便於網絡傳輸。
- 對於不經常更新的線上項目,由於三方jar包出現的安全問題(例如:fastjson多個版本被報安全問題),只需替換相關依賴jar包,無需重新發版,走提測發版流程。
- 對於需要部署多套線上環境的項目,不同環境可能依賴不同jar包,不同環境使用各自所需jar包即可,無需全部打包到項目中。例如:對接運營商4a系統,各省4a服務提供商和版本各不相同,將4a相關依賴從項目中移除,各省環境使用各自jar包即可。
具體步驟
使用spring-boot-maven-plugin組件
maven配置如下:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.version}</version>
<configuration>
<mainClass>com.xxx.App</mainClass> <!--spring boot啓動類-->
<layout>ZIP</layout> <!--使用ProperitiesLauncher加載器-->
<includes>
<include>
<groupId>nothing</groupId> <!--設置nothing表示打包時不將依賴jar包打包進來-->
<artifactId>nothing</artifactId>
</include>
</includes>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
jar包啓動方式
將依賴jar包輸出到指定目錄中
mvn dependency:copy-dependencies -DoutputDirectory=thirdJars
以上命令將三方依賴jar包輸出到thirdJars目錄中
使用:
-Dloader.path
指定啓動時加載的依賴jar包路徑,在啓動時ProperitiesLauncher會將相關jar包加載到進程中,三方jar包中的日誌等內容可以在java進程中輸出。
exp:
java -Xms4g -Xmx8g -XX:MetaspaceSize=128M -XX:+PrintGCApplicationStoppedTime -XX:+HeapDumpOnOutOfMemoryError -Dloader.path=lib -jar manage.jar
至此項目jar包瘦身完畢。