写点什么

学会这招,来给你的 SpringBoot 工程部署的 jar 包瘦瘦身吧!

作者:Java你猿哥
  • 2023-05-22
    湖南
  • 本文字数:1545 字

    阅读完需:约 5 分钟

一、背景

SpringBoot 为我们快速开发提供了很好的架子,使得我们只需要少量配置就能开始我们的开发工作,但是当我们需要打包上传部署时,却是很神伤的一个问题,因为打出来的 Jar 包少则十几兆,多则一百来兆,我们需要上传至公网服务器时,是非常慢的,这就引出了今天的主题,SpringBoot 项目 Jar 包如何瘦身部署

1、思路

分析 jar,我们可以看出,jar 包里面分为以下三个模块


分为 BOOT-INFMETA-INForg 三个部分,打开 BOOT-INF


可以看到有 classeslib 两个文件夹,我们编译好的代码是放在 classes 里面的,而我们所依赖的 jar 包都是放在 lib 文件夹下

classes 部分是非常小的(我的是 3M 左右),lib 部分是非常大的(我的是 70M 左右),所以上传很慢

那我们可以将我们自己写的代码部分与所依赖的 maven jar 包部分拆开上传,每次只需要上传我们自己写的代码部分即可

二、瘦身部署

1、正常打包

首先,我们项目的 pom.xml 文件中的打包方式如下:

<build>    <plugins>        <plugin>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-maven-plugin</artifactId>        </plugin>    </plugins></build>
复制代码

这是 SpringBoot 中默认的打包方式,我们先按照这种方式打包出来,得到一个 jar 包,我们将 jar 包解压,如果不能直接解压,则将后缀改为 zip 再进行解压,我们只需要拿到 BOOT-INF 中的 lib 目录即可

2、改变打包方式

我们对 SpringBoot 中默认的打包方式做一些配置

<build>    <plugins>        <plugin>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-maven-plugin</artifactId>            <configuration>                <mainClass>com.zyxx.DeclareApplication</mainClass>                <layout>ZIP</layout>                <includes>                    <include>                        <groupId>nothing</groupId>                        <artifactId>nothing</artifactId>                    </include>                </includes>            </configuration>            <executions>                <execution>                    <goals>                        <goal>repackage</goal>                    </goals>                </execution>            </executions>        </plugin>    </plugins></build>
复制代码


<build>    <plugins>        <plugin>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-maven-plugin</artifactId>            <configuration>                <mainClass>com.zyxx.DeclareApplication</mainClass>                <layout>ZIP</layout>                <includes>                    <include>                        <groupId>nothing</groupId>                        <artifactId>nothing</artifactId>                    </include>                </includes>            </configuration>            <executions>                <execution>                    <goals>                        <goal>repackage</goal>                    </goals>                </execution>            </executions>        </plugin>    </plugins></build>
复制代码


nohup java -Dloader.path=./lib -jar ./sbm-0.0.1-SNAPSHOT.jar &
复制代码
  • -Dloader.path,告诉它所依赖的 maven jar 包位置

  • sbm-0.0.1-SNAPSHOT.jar,项目 jar 包的名字

  • nohup、&,使得 jar 包在服务后台运行

四、总结

使用瘦身部署,方便每次的迭代更新,不用每次都上传一个很大的 jar 包,从而节省部署时间

用户头像

Java你猿哥

关注

一只在编程路上渐行渐远的程序猿 2023-03-09 加入

关注我,了解更多Java、架构、Spring等知识

评论

发布
暂无评论
学会这招,来给你的 SpringBoot 工程部署的 jar 包瘦瘦身吧!_Java_Java你猿哥_InfoQ写作社区