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包瘦身完毕。