本文已参与「新人创作礼」活动,一起开启掘金创作之路。
背景技术
- 随着Spring Boot的流行,越来越多开发者选择使用Spring Boot来发布Web应用。不同于传统的War包发布,Spring Boot把整个项目打包成一个可运行的Jar包,导致了这个Jar包很大(通常有50MB+)。
- 如今迭代发布时经常需要每次都上传一个如此庞大的文件,网速又不达标的情况下会浪费很多时间。
- SpringBoot 部署起来虽然简单,如果服务器部署在公司内网,速度还行。
- 但是如果部署在公网(阿里云等云服务器上),部署起来实在头疼:因为编译出来的 Jar 包很大,如果工程引入了许多开源组件(SpringCloud 等),那就更大了。
- 这个时候如果想要对线上运行工程有一些微调,则非常痛苦
解决方案
- 用mvn package正常打出jar包,可能有几百兆大小,其中lib依赖占了绝大多数
- 这里需要完整打包一次再通过压缩软件将 BOOT-INF 下的 lib 包拿出单独存放,
- 后续只要pom依赖没有更新,则在pom中借助插件将jar包去除,每次只需要上传无lib依赖的jar压缩包到服务器上面即可
- 再次用 mvn package 打出来的包就不包含lib了
- 每次上传打包文件就不用一直传依赖包了,除非依赖有更新或者是变动才需要重新上传,能大大减少打包文件的体积。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<!--借助插件分离lib目录,减小jar包体积。依赖更新时需要及时更新分离的lib包-->
<mainClass>com.cfl.jd.JDApplication</mainClass>
<layout>ZIP</layout>
<includes>
<include>
<!-- 排除所有Jar -->
<groupId>nothing</groupId>
<artifactId>nothing</artifactId>
</include>
</includes>
</configuration>
</plugin>
- 运行jar包命令为
java -Dloader.path=lib包的路径 -jar jar包的名字.jar