SpringBoot 瘦身

本教程来自 编程不良人 哔哩哔哩视频

1.什么是瘦身

瘦身: thinBody 又称 “减肥”、“减重”。 就是合理、科学的减轻自身重量的。SpringBoot 应用瘦身顾名思议:就是将 SpringBoot 应用打包的 jar 利用合理的方式、方法减小体积。

总结:简单来说就是将jar包依赖分开(一部分是自己的写的代码,另部分是第三方使用的依赖库)

2.为什么瘦身

场景: 现有的应用开发中,不论是单体架构、微服务架构,如果项目采用的是 springboot、springcloud 来作为底层框架,打包时最终都会以jar包的方式打包、部署。这是就会面临一个问题,就是 jar 包非常大,单体应用还好,但是如果是微服务就非常痛苦,几十个微服务就要拆分打包几十个 jar 包,每个 jar 包都很大(几百M),合起来就好几个 GB,非常占用空间。如果是内网部署,遇到动辄GB的升级包还能勉强接受,最多就是运维心里默默地吐槽一下,但是如果在外网云环境、或者客户现场,那令人痛不欲生的带宽加上各种网络转换限制,运维心里各种🐴。因为这个你的领导又给你各种批头盖脸一顿。

你觉得很委屈😢,确实不是你的代码问题,但是这确实是我们该考虑的。因此呢?基于以上原因我们要为项目进行瘦身!

3.如何瘦身

瘦身思路:

将jar分开两部分(一部分是自己的写的代码,另部分是第三方使用的依赖库)

3.1 引入插件依赖

剥离第三方依赖

依赖可以不修改:在打包的时候,将第三方依赖运行时的依赖copy到 target/lib 目录下,

<!-- 此插件用于将依赖包抽出-->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>3.1.1</version>
    <executions>
        <execution>
            <id>copy-dependencies</id>
            <!-- package打包的时候生效 -->
            <phase>package</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
            <configuration>
                <!--第三方依赖copy到 target/lib 目录下 -->
                <outputDirectory>${project.build.directory}/lib</outputDirectory>
                <!--是否排除传递性 -->
                <excludeTransitive>false</excludeTransitive>
                <!--是否去掉 jar 包版本信息 -->
                <stripVersion>false</stripVersion>
                <!--包含范围 runtime 运行时 -->
                <includeScope>runtime</includeScope>
            </configuration>
        </execution>
    </executions>
</plugin>
打包插件(整个,可以忽略)

注意:这是整个打包插件,看看就行 重点在下面(如果看只看 configuration 标签内的内容)

<plugins>
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <!--修改一:修改为自己的启动应用-->
            <mainClass>com.ruoyi.RuoYiApplication</mainClass>
            <!--解决windows命令行窗口中文乱码-->
            <jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
            <layout>ZIP</layout>
            <!--配置需要打包进项目的jar-->
            <includes>
                <!--修改二:
                    这里是填写需要包含进去的jar,
                	必须项目中的某些模块,会经常变动,那么就应该将其坐标写进来
                	如果没有则non-exists ,表示不打包依赖
                -->
                <include>
                    <groupId>non-exists</groupId>
                    <artifactId>non-exists</artifactId>
                </include>
            </includes>
        </configuration>
        <executions>
            <execution>
                <id>repackage</id>
                <goals>
                    <goal>repackage</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
打包插件(重点)

我们只需要将这个 configuration 标签内容放到打包插件中,然后修改相对应地内容

<configuration>
    <!--修改一:修改为自己的启动应用-->
    <mainClass>com.ruoyi.RuoYiApplication</mainClass>
    <!--解决windows命令行窗口中文乱码-->
    <jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
    <layout>ZIP</layout>
    <!--配置需要打包进项目的jar-->
    <includes>
        <!--修改二:排处的jar包
          这里是填写需要包含进去的jar,比如 应用中common包之类
        	必须项目中的某些模块,会经常变动,那么就应该将其坐标写进来
        	如果没有则non-exists ,表示不打包依赖
        -->
        <include>
            <groupId>non-exists</groupId>
            <artifactId>non-exists</artifactId>
        </include>
    </includes>
</configuration>

3.2 瘦身后查看

3.4 如何运行

-Dloader.path=./lib 指定第三方依赖库的文件地址

java -jar -Dloader.path=./lib ruoyi.jar
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值