一、前言
Spring Boot部署起来虽然简单,如果服务器部署在公司内网,速度还行,但是如果部署在公网,部署起来实在头疼:编译出来的 Jar 包很大,如果工程引入了许多开源组件(Spring Cloud等),那就更大了。
这个时候如果想要对线上运行工程有一些微调,则非常痛苦。
二、瘦身前的Jar包
Tomcat在部署Web工程的时候,可以进行增量更新,Spring Boot也是可以的~
Spring Boot编译出来的Jar包中,磁盘占用大的,是一些外部依赖库(jar包),例如:进入项目工程根目录,执行 mvn clean install 命令,得到的Jar包,用压缩软件打开,目录结构如下:
整个Jar包 18.18 MB, 但是 BOOT-INF/lib 就占用了将近 18 MB:
三、解决方法
步骤1: 正常编译JAR包,解压出lib文件夹
POM文件如下:
<build>  <plugins>  <plugin>  <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-maven-plugin</artifactId>  <configuration>  <mainClass>com.johnnian.App</mainClass>  <layout>ZIP</layout>  </configuration>  <executions>  <execution>  <goals>  <goal>repackage</goal>  </goals>  </execution>  </executions>  </plugin>  <plugins>
<build>
进入项目根目录,执行命令:mvn clean install
将编译后的Jar包解压,拷贝 BOOT-INF 目录下的lib文件夹 到目标路径;
步骤2: 修改pom.xml配置,编译出不带 lib 文件夹的Jar包
<build>  <plugins>  <plugin>  <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-maven-plugin</artifactId>  <configuration>  <mainClass>com.johnnian.App</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>
配置完成后,再次执行编译:mvn clean install
生成的 Jar 包体积明显变小,如下所示, 外部的 jar 包已经不会被引入了:
步骤3: 运行编译后的Jar包
将 步骤1 解压出来的lib文件夹、步骤2编译的jar包放在同一个目录, 运行下面命令:
java -Dloader.path=/path/to/lib -jar /path/to/springboot-jsp-0.0.1-SNAPSHOT.jar
或者在maven中输入一下命令导出需要用到的jar包
mvn dependency:copy-dependencies -DoutputDirectory=F:\\ideaWorkPlace\\AnalysisEngine\\lib -DincludeScope=runtime
备注:
将/path/to/改成实际的路径。
-Dloader.path=lib文件夹路径
最终目录文件结构是:
├── lib   #lib文件夹
└── springboot-jsp-0.0.1-SNAPSHOT.jar
说明:
1、通常,一个工程项目架构确定后,引入的jar包基本上不会变,改变的大部分是业务逻辑;
2、后面如果需要变更业务逻辑,只需要轻量地编译工程,大大提高项目部署的效率。
来自:yjgithub | 责编:乐乐
链接:blog.csdn.net/yjgithub/article/details/80475521
IT技术分享社区文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识

Spring Boot 项目瘦身指南,非常实用!相关推荐

  1. Spring Boot 项目瘦身指南,瘦到不可思议!129M->1.3M

    之前在 从使用传统Web框架到切换到Spring Boot后的总结 中提到关于 Spring Boot 编译打包,Spring Boot 应用程序不用额外部署到外部容器中,可以直接通过 Maven 命 ...

  2. Spring Boot 项目瘦身指南,瘦到不可思议!

    https://blog.csdn.net/yjgithub/article/details/80475521 目录: 前言 瘦身前的 Jar 包 解决方案 一.前言 SpringBoot 部署起来虽 ...

  3. Spring Boot项目瘦身

    目录 1,什么是瘦身? 2,为什么要瘦身? 3,如何瘦身? 3.1,瘦身思路: 3.2,瘦身方法 4,瘦身后运行 1,什么是瘦身? 瘦身:thinBody,又称"减肥"." ...

  4. Spring Boot Gradle 瘦身打包 thinJar,分离 lib jar 依赖

    原文地址:weiku.co/article/135/ ,欢迎转载 需求背景: srping boot 2.0+ 打包生产的 fat jar 虽然部署起来很方便,但将所有依赖都打包到一个 jar 包中使 ...

  5. 一个三线程序员的2020年,CSDN 10 万粉里程碑达成,SpringBoot项目瘦身指南

    先说说我身边的几个朋友吧,他们无一例外,都是通过写作建立起来的影响力. 第一个,我想到的就是纯洁的微笑.我在写作方面之所以能突飞猛进,除了源于我自身的努力,微笑哥在初期给了我不少无私的帮助. 微笑哥是 ...

  6. SpringBoot 项目瘦身指南,瘦到不可思议!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:yjgithub blog.csdn.net/yjgithu ...

  7. SpringBoot项目瘦身指南,大厂如何面试看出你的水平

    其实初级开发升级到高级开发还是相对容易的,只要主观上态度上端正,别固步自封,然后到处看些资料多和人交流即可.如果进互联网公司,在大压力环境下,身边大牛再多些,升级过程会更加顺利. ####2 高级程序 ...

  8. 我的Android进阶之旅------gt;Android APP终极瘦身指南

    首先声明,下面文字转载于: APK瘦身实践 http://www.jayfeng.com/2015/12/29/APK%E7%98%A6%E8%BA%AB%E5%AE%9E%E8%B7%B5/ APP ...

  9. 后端开发实践:Spring Boot项目模板

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达今日推荐:2020年7月程序员工资统计,平均14357元,又跌了,扎心个人原创100W+访问量博客:点击前往,查看更多 作者 ...

最新文章

  1. 对云风 cstring 第二次解析
  2. Linux sed编辑器
  3. 中科大镜像源_JETPACK4.4安装软件和备份镜像的方法介绍
  4. Windows上快速在指定目录打开cmd.exe命令行的方法
  5. Sublime Text 2配置强大的IDE开发环境,运行java
  6. admin- 源码解析(流程)
  7. 国产计算机设备,国产计算机报价
  8. IMX462 Sensor 对接HI3559A
  9. 狮子鱼社区团购独立版安装方法
  10. python读取文件UnicodeDecodeError: 'gbk' codec can't decode byte 0xfe in position 575056: illegal multiby
  11. python 循环播放音乐_python中pygame循环播放3首音乐和3张图片
  12. 微信设置字体后微信浏览器页面字体也会跟着改变的解决办法
  13. 介绍一门很有前景的语言Nim(1)
  14. 计算机图形学透视投影知识点,计算机图形学
  15. Ubuntu22.04安装、配置、美化、软件安装、配置开发环境
  16. 微博营销有什么价值?应注意什么?
  17. android activity 窗口化后 隐藏
  18. JAVA毕业设计Web商铺租赁管理系统计算机源码+lw文档+系统+调试部署+数据库
  19. 亲戚称谓计算机在线,过节神器 | 亲戚称谓计算器,帮你捋顺亲戚关系!
  20. Latex模版以及经验汇总

热门文章

  1. 淘宝跨域获取Cookie分析
  2. 解析.sens数据集
  3. MFC入门(一)——MFC是一个编程框架
  4. CMOS图像传感器——工作原理
  5. 跨时钟域电路设计——结绳法
  6. Wiener Filter维纳滤波器halcon算子,持续更新
  7. 【python pandas excel操作】
  8. 第4章 Python 数字图像处理(DIP) - 频率域滤波5 - 二变量函数的傅里叶变换、图像中的混叠、二维离散傅里叶变换及其反变换
  9. 医学计算机应用研究的意义,医学图像感兴趣区域的自动提取-计算机应用研究.PDF...
  10. php smarty框架案例,php封装的smarty类案例