前言
在公司的项目中,一个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>
重新打包
接下来第一步先点击右上方的加载Maven更改,或者使用快捷键Ctrl+shift+o,然后点击右侧Maven菜单下的生命周期里面的package即可
图一是控制台的输出,图二是打包后的文件,我们可以看到这次打包后只有132KB
测试jar包
我们接下来测试分离完后的jar包是否正常使用,我们将lib文件夹和jar包放在同一个目录下面,然后打开一个cmd窗口,输入下面命令–记得将IDEA里面的工程停了,不然会报端口被占用哦。
java -Dloader.path=./lib -jar boot-template.jar
命令解释:-Dloader.path 用来指定lib存放位置,下面是运行成功截图~
测试接口
接着我们来测试接口功能是否正常,我们回到接口工具重新调用了一次test接口,发现返回的数据没区别
在CMD里面我们也可以看到,连接MySQL也没啥问题。到此本文结束,如有问题请可以在评论区发出来或者私信我哦~
备注
细心的小伙伴发现,如果我们改了Pom文件要怎么办呢?当然是把之前加的那几行去掉,然后重新解压一次lib包即可