前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >SpringBoot实现lib包与代码本体分离

SpringBoot实现lib包与代码本体分离

原创
作者头像
半月无霜
修改2025-01-20 09:46:18
修改2025-01-20 09:46:18
1220
举报
文章被收录于专栏:半月无霜半月无霜

一、前言

最近在编写自己项目的时候,发现部署的过程中,打的Jar包过大,导致传输到服务器上的时候速度有点缓慢。

要是平常也就算了,那天我想着就一个小问题就没有本地验证了,直接发上服务器。

这是一个不好的习惯,大家不要学 一定要保证代码验证通过后再进行发布部署

结果部署后,发现改的不对,连着这样搞了三次。

这三次上传的时间,我就觉得等得没有必要了,都是自己的源代码改动,没有涉及到依赖包的新增修改,打出来的Jar包还是170M多,也难怪别人说JavaSpringBoot重呢

image-20250119192112945
image-20250119192112945

那么结合这次不愉快的体验,我找了方法对Jar包进行优化瘦身,也就是将其中的lib包从jar包本体中剥离出来

看看是如何做的吧

二、Maven

没错,既然是打Jar包,那么肯定是我们的构建工具Maven了,我们来看看pom.xml文件,要经过哪些修改,才可以达成我们想要的效果

首先是我们的org.springframework.boot插件

代码语言:xml
复制
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <executable>true</executable>
        <layout>ZIP</layout>
        <jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
        <includes>
            <include>
                <groupId>nothing</groupId>
                <artifactId>nothing</artifactId>
            </include>
        </includes>
    </configuration>
</plugin>

只需要这样,就能将Jar包中的lib包给剔除,那么现在,我们来重新打包一下,结果如下

image-20250119192859184
image-20250119192859184

如果我们的lib包有改动,换了依赖,或者新增了依赖,那么我们就需要更新部署的lib包。但是,在上图中,我们没有lib包,那该怎么办,我们现在还需要将lib包生成出来,放在Jar包的同级目录下

这时候,我们需要一个新的Maven构建插件,如下

代码语言:xml
复制
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <!--指定的依赖路径-->
                            <outputDirectory>
                                ${project.build.directory}/lib
                            </outputDirectory>
                            <excludeScope>provided</excludeScope>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

添加上了,我们再来重新打包一下,这一次应该是没有问题了,看下结果

image-20250119193931635
image-20250119193931635

完美,成功分离

三、最后

那么如何去启动这个Jar包呢,我直接下面的命令试了一下

java -jar banmoon-web-base.jar

发现不行,没找到对应的包啊

image-20250119194737185
image-20250119194737185

那么该如何启动这个Jar包呢,这个时候,需要换一种Jar启动脚本,我们换这个试试看

image-20250119195603718
image-20250119195603718

这个时候,就能够顺利启动了,非常nice

好了,希望大家能够掌握本项技能,让你的工程也能够通过这样进行瘦身,优化传输速度。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、Maven
  • 三、最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档