点击上方“方志朋”,选择“设为星标”

回复”666“获取新整理的面试文章

作者 | yjgithub

来源 | http://suo.im/5OOWQy

一、前言

SpringBoot部署起来虽然简单,如果服务器部署在公司内网,速度还行,但是如果部署在公网(阿里云等云服务器上),部署起来实在头疼:编译出来的 Jar 包很大,如果工程引入了许多开源组件(SpringCloud等),那就更大了。

这个时候如果想要对线上运行工程有一些微调,则非常痛苦

二、瘦身前的Jar包

Tomcat在部署Web工程的时候,可以进行增量更新,SpringBoot也是可以的~

SpringBoot编译出来的Jar包中,磁盘占用大的,是一些外部依赖库(jar包),例如:

进入项目工程根目录,执行 mvn clean install 命令,得到的Jar包,用压缩软件打开,目录结构如下:

整个Jar包 18.18 MB, 但是 BOOT-INF/lib 就占用了将近 18 MB:

三、解决方法

步骤1: 正常编译JAR包,解压出lib文件夹

POM文件如下:

进入项目根目录,执行命令:mvn clean install

将编译后的Jar包解压,拷贝 BOOT-INF 目录下的lib文件夹 到目标路径;

步骤2: 修改pom.xml配置,编译出不带 lib 文件夹的Jar包

配置完成后,再次执行编译:mvn clean install

生成的 Jar 包体积明显变小,如下所示, 外部的 jar 包已经不会被引入了:

步骤3: 运行编译后的Jar包

将 步骤1 解压出来的lib文件夹、步骤2编译的jar包放在同一个目录, 运行下面命令:

或者在maven中输入一下命令导出需要用到的jar包

备注:

将/path/to/改成实际的路径。

-Dloader.path=lib文件夹路径

最终目录文件结构是:

说明

1、通常,一个工程项目架构确定后,引入的jar包基本上不会变,改变的大部分是业务逻辑;

2、后面如果需要变更业务逻辑,只需要轻量地编译工程,大大提高项目部署的效率。

热门内容:为什么像王者荣耀这样的游戏 Server 不愿意使用微服务?为什么很多 SpringBoot 开发者放弃了 Tomcat,选择了 Undertow?Spring Boot+JWT+Shiro+MyBatisPlus实现Restful快速开发后端脚手架
浅析 VO、DTO、DO、PO 的概念、区别和用处!最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。
明天见(。・ω・。)ノ♡

给 Spring Boot 项目减减肥!18.18M 到 0.18M 是如何做到的?相关推荐

  1. Spring Boot-Spring Tool Suit + Gradle 构建第一个Spring Boot 项目02

    概述 将工程托管到Github Gradle构建 为什么一个main函数就能启动web并提供这么多功能 幕后的 Spring Boot 分发器和 multipart 配置 视图解析器.静态资源以及区域 ...

  2. 在IntelliJ IDEA里创建Spring Boot项目

    IntelliJ IDEA是非常流行的IDE,IntelliJ IDEA 14.1已经支持Spring Boot了! 要在IntelliJ IDEA里创建新的Spring Boot应用程序,在File ...

  3. STS创建Spring Boot项目实战(Rest接口、数据库、用户认证、分布式Token JWT、Redis操作、日志和统一异常处理)

    STS创建Spring Boot项目实战(Rest接口.数据库.用户认证.分布式Token JWT.Redis操作.日志和统一异常处理) 1.项目创建 1.新建工程 2.选择打包方式,这边可以选择为打 ...

  4. springboot导入项目依赖报错_如何解决spring boot 项目导入依赖后代码报错问题

    如何解决spring boot 项目导入依赖后代码报错问题 2020-08-15  14:17:18 代码截图如图所示(由于本人问题已经解决,没来得及截图,所以在网上找了一张图片) ​ 针对图中所示的 ...

  5. Jenkins部署spring boot项目

    本文介绍使用Jenkins自动打包发布spring boot项目,我们在没有使用持续集成工具的情况下,开发好的spring boot项目,通过maven打包,上传jar包到服务器上,通过java -j ...

  6. 从服务器基础环境配置到搭建Docker+Gitlab+Gitlab Runner,完整介绍Spring Boot项目的持续集成与持续交付具体实现!

    1. 序言 在大学的课程学习,非常注重团队协作的培养,在企业开发中,团队协作开发项目的场景更是甚多.另外,在当下的热门技术栈中,微服务开发模式.前后端分离开发模式逐渐盛行,Spring Boot.VU ...

  7. Vue + Spring Boot 项目实战(十五):动态加载后台菜单

    重要链接: 「系列文章目录」 「项目源码(GitHub)」 本篇目录 前言 一.后端实现 1.表设计 2.pojo 3.菜单查询接口(树结构查询) 二.前端实现 1.后台页面设计 2.数据处理 3.添 ...

  8. Spring Boot项目学习之通用权限管理项目01

    权限管理系统是一个十分常见的系统,在这个系统中是基于角色访问控制的,用户是通过角色与权限进行关联.换句话说,就是一个用户拥有若干个角色,每一个角色拥有若干权限,这样就可以形成一个关系模型:用户-角色- ...

  9. Spring Boot 项目结构介绍

    POM文件 <!-- 父工程 --><parent><groupId>org.springframework.boot</groupId><art ...

最新文章

  1. PAT Basic 1072
  2. 国庆七天乐——第一天
  3. ArcGIS Engine空间高效查询(IIdentify方法)
  4. 四、spring中高级装配(2)
  5. nodejs因buildpack指定不当部署到CloudFoundry后出的一个错误
  6. 丁力 | cnSchema:中⽂知识图谱的普通话
  7. 这张磁盘有写保护_架构师不得不了解的硬件知识 - 磁盘阵列RAID
  8. Python | 重命名现有文件(os.rename()方法的示例)
  9. discuz的ajax,discuz分页函数改成基于jqueryd的ajax分页函数
  10. python实用代码
  11. 2022考研数据结构_1 绪论
  12. MySql练习题大全(带答案)-练习完啥都会了
  13. adb与java端口冲突,如何解决adb devices 端口被占用的问题zz
  14. STM8单片机STVD环境新建工程笔记
  15. python wilcoxon test_自动化框架之 python+selenium+pytest · TesterHome
  16. PiaolinPlatformV2.0.0 - 获取手机或电脑GPS位置信息(定位平台)
  17. java运算符与数字分解,看完对java更加有信心了(主除以和取余的理解)
  18. 使用指针实现strcpy函数的功能
  19. AR镜头下的时尚潮流,谁正成为弄潮儿?
  20. windows 命令提示符 修改/prompt

热门文章

  1. 谜题59:什么是差?
  2. python基础-垃圾回收机制
  3. 大话设计模式读书笔记--4.代理模式
  4. WebFrom模拟MVC
  5. SQL取上一条, 下一条记录方法
  6. 应用内设置语言不重启方法
  7. 12小时进制的时间输出的编辑代码
  8. Extjs Ext.TreePanel
  9. Matlab编程与数据类型 -- 出错处理语句try/catch/end
  10. Matlab与线性代数 -- 对角矩阵