SpringBoot项目Jar包如何瘦身部署的实现

 更新时间:2020年09月10日 09:23:07   作者:Asurplus、  
这篇文章主要介绍了SpringBoot项目Jar包如何瘦身部署的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、背景

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

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


分为 BOOT-INF,META-INF,org 三个部分,打开 BOOT-INF


可以看到有 classes,lib 两个文件夹,我们编译好的代码是放在 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>
  • mainClass,我们指定了项目的启动类
  • layout,我们指定了打包方式为 ZIP,注意:一定是大写的
  • includes,有自己的依赖 jar,可以在此导入
  • repackage,剔除其它的依赖,只需要保留最简单的结构

3、再次打包

我们再次点击 maven package,得到一个 jar 包,可以看到此时的 jar 包只有几兆了

三、上传启动

我们将 lib 目录,以及最后打包的瘦身项目 jar 包,上传至服务器,目录如下

使用命令

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 包,从而节省部署时间

到此这篇关于SpringBoot项目Jar包如何瘦身部署的实现的文章就介绍到这了,更多相关SpringBoot Jar包瘦身部署内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot项目部署到阿里云服务器的实现步骤

    SpringBoot项目部署到阿里云服务器的实现步骤

    本文主要介绍了SpringBoot项目部署到阿里云服务器的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Spring Boot 端口被占用的解决方法

    Spring Boot 端口被占用的解决方法

    这篇文章主要介绍了解决 Spring Boot 端口被占用的方法详解,通过本文的介绍,你学习了如何解决 Spring Boot 端口被占用的问题。你了解了检查端口是否被占用、停止占用端口的进程、更改应用程序的端口号以及检查应用程序间的端口冲突等方法,需要的朋友可以参考下
    2023-07-07
  • 从零开始Mybatis连接数据库的方法

    从零开始Mybatis连接数据库的方法

    这篇文章主要介绍了Mybatis连接数据库的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • SpringSecurity退出功能实现的正确方式(推荐)

    SpringSecurity退出功能实现的正确方式(推荐)

    本文将介绍在Spring Security框架下如何实现用户的"退出"logout的功能。本文通过实例代码讲解的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧
    2019-11-11
  • java操作mongodb示例分享

    java操作mongodb示例分享

    这篇文章主要介绍了java操作mongodb示例,实现了简单的条件查询和复杂的条件查询,需要的朋友可以参考下
    2014-02-02
  • Java关于后端怎么去接收Date、LocalDateTime类型的参数详解

    Java关于后端怎么去接收Date、LocalDateTime类型的参数详解

    这篇文章主要介绍了java关于后端怎么去接收Date、LocalDateTime类型的参数,文中有详细的代码流程,对我们学习或工作有一定的参考价值,需要的朋友可以参考下
    2023-06-06
  • Java IO模型之BIO、NIO、AIO三种常见IO模型解析

    Java IO模型之BIO、NIO、AIO三种常见IO模型解析

    这篇文章主要介绍了今天我们来聊Java IO模型,BIO、NIO、AIO三种常见IO模型,我们从应用调用的过程中来分析一下整个IO的执行过程,不过在此之前,我们需要简单的了解一下整个操作系统的空间布局,需要的朋友可以参考下
    2024-07-07
  • java 使用异常的好处总结

    java 使用异常的好处总结

    这篇文章主要介绍了java 使用异常的好处总结的相关资料,需要的朋友可以参考下
    2017-03-03
  • spring框架学习总结

    spring框架学习总结

    Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架
    2021-06-06
  • java集合遍历的几种方式总结及详细比较

    java集合遍历的几种方式总结及详细比较

    下面小编就为大家带来一篇java集合遍历的几种方式总结及详细比较。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04

最新评论