• SpringBoot依赖和代码分开打包


    前言

    在公司的项目中,一个SpringBoot工程可能就上百MB,这时候当线上网速不佳的时候,部署起来就十分的痛苦了。。经常等好久才能上传完毕,接下来我来教大家一个SpringBoot工程代码和依赖分开打包的方法。这种方法将依赖和代码分开打包,一般更新只有代码修改,Pom文件是不会经常改动的~

    效果展示

    分开打包前

    足足有191MB
    在这里插入图片描述

    分开打包后

    只剩3.5MB了
    在这里插入图片描述
    减负的效果拔群

    创建新工程

    工程结构

    我新建了一个SpringBoot工程,目录结构如下。
    在这里插入图片描述

    测试工程是否可用

    就是一个非常简单的工程,只有一个Controller,让我们来启动然后调用一下TestController里面的test方法
    在这里插入图片描述

    调用结果

    调用结果是正常的,也通过MyBatis-plus读取到了数据的内容
    在这里插入图片描述

    正式开始

    分离依赖

    target目录结构

    当我们运行成功后,在项目的target目录下,会自动给我们生成项目名-1.0-SNAPSHOT.jar文件,如图一所示。如果没有生成的话,大家可以点击右侧的Maven生成,如图二所示。
    在这里插入图片描述

    在这里插入图片描述

    打开文件拓展名

    这里我们是生成了.jar文件的,那就进入到下一步,将jar文件重命名成.zip文件,如果有同学没打开文件扩展名的选项,可以在图一所示的地方打开文件扩展名选项即可。

    在这里插入图片描述

    修改文件拓展名

    这个时候我们已经将.jar改成.zip了,双击打开或者使用压缩工具打开都可以。
    在这里插入图片描述

    如果改成zip报错可以改成rar

    如果打开时候提示报错,可以将.zip换成.rar试试哦
    在这里插入图片描述

    压缩包目录

    打开后的文件目录如下图所示
    在这里插入图片描述

    解压出lib目录

    接着我们选择第一个文件夹BOOT-INF,然后可以看到它下面有两个二级文件夹,其中一个就是lib,这个就是我们想要的文件夹。我们可以双击打开看看里面存放的都是什么文件。
    在这里插入图片描述
    我们打开后发现里面都是依赖文件,所以这就是我们想要的依赖包
    在这里插入图片描述
    然后我们把这个lib依赖解压出来,解压位置随意。

    修改Pom文件

    将lib文件夹解压出来后,我们开始修改Pom文件,这个时候我们已经将依赖分离出来了,我们只需要打包代码即可。
    所以我们修改Pom文件分两种情况

    情况一

    在Pom文件下的build节点下已经有pluginManagement节点,找到下面这个节点,将图片红框中的几行复制进去
    在这里插入图片描述

    情况二

    在Pom文件下的build节点下还没有pluginManagement节点,直接将我下面提供的pluginManagement节点复制到build节点底下即可。
    在这里插入图片描述

    <pluginManagement>
                <plugins>
                    <plugin>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-maven-plugin</artifactId>
                        <version>2.3.2.RELEASE</version>
                        <configuration>
                            <finalName>boot-template</finalName>
                            <layout>ZIP</layout>
                            <includeSystemScope>true</includeSystemScope>
                            <executable>true</executable>
                            <includes>
                                <include>
                                    <groupId>nothing</groupId>
                                    <artifactId>nothing</artifactId>
                                </include>
                            </includes>
                        </configuration>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>repackage</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </pluginManagement>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    重新打包

    接下来第一步先点击右上方的加载Maven更改,或者使用快捷键Ctrl+shift+o,然后点击右侧Maven菜单下的生命周期里面的package即可
    在这里插入图片描述
    图一是控制台的输出,图二是打包后的文件,我们可以看到这次打包后只有132KB
    在这里插入图片描述

    在这里插入图片描述

    测试jar包

    我们接下来测试分离完后的jar包是否正常使用,我们将lib文件夹和jar包放在同一个目录下面,然后打开一个cmd窗口,输入下面命令–记得将IDEA里面的工程停了,不然会报端口被占用哦。

    java -Dloader.path=./lib -jar boot-template.jar
    
    • 1

    命令解释:-Dloader.path 用来指定lib存放位置,下面是运行成功截图~
    在这里插入图片描述

    测试接口

    接着我们来测试接口功能是否正常,我们回到接口工具重新调用了一次test接口,发现返回的数据没区别
    在这里插入图片描述
    在CMD里面我们也可以看到,连接MySQL也没啥问题。到此本文结束,如有问题请可以在评论区发出来或者私信我哦~
    在这里插入图片描述

    备注

    细心的小伙伴发现,如果我们改了Pom文件要怎么办呢?当然是把之前加的那几行去掉,然后重新解压一次lib包即可

  • 相关阅读:
    火爆企业圈的知识管理,究竟是何方神圣?
    MySQL中的中文报错--保姆级解决方法
    达梦8创建schema模式sql无法结束
    简单但好用:4种Selenium截图方法了解一下!
    python绘图小dome
    适配器模式 结构性模式之五
    殿堂级Flink源码极精课程预售
    (55、56)性能分析命令
    CS110L(Rust)
    Scala入门到精通(尚硅谷学习笔记)章节十——模式匹配
  • 原文地址:https://blog.csdn.net/qq_15752347/article/details/134049878