把 Spring Boot 项目从 18.18M 瘦身到 0.18M, 超级快!

程序员咋不秃头2024-05-03 18:38:45  59

一、前言

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文件如下:

org.springframework.boot spring-boot-maven-plugin com.johnnian.App ZIP repackage

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

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

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

org.springframework.boot spring-boot-maven-plugin com.johnnian.App ZIP nothing nothing repackage

配置完成后,再次执行编译: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:ideaWorkPlaceAnalysisEnginelib -DincludeScope=runtime

备注:

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

-Dloader.path=lib文件夹路径

最终目录文件结构是:

├── lib #lib文件夹└── springboot-jsp-0.0.1-SNAPSHOT.jar

说明

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

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

转载此文是出于传递更多信息目的。若来源标注错误或侵犯了您的合法权益,请与本站联系,我们将及时更正、删除、谢谢。
https://www.414w.com/read/416468.html
0
随机主题
奢华无界 劳斯莱斯Black Badge库里南系列II诠释当代颠覆精神被注射抑生长剂, 皮肤溃烂无人管, 这3位童星, 真的被父母害惨了传媒板块跌幅扩大, 新华都触及跌停绿色地球授予认证北冕号在内的全部庞洛邮轮旗下船只科比没有詹姆斯一样强悍的身体天赋, 否则生涯绝对不仅仅是5冠京东严惩“摸摸党”用户, 网友热议纷纷指责其不道德行为父亲是非洲人, 他却入选了中国男篮, 和肤白貌美的女友是青梅竹马日媒: 初创企业成乌军用无人机开发主力海贼王1115话: 路飞跑路, 索隆娜美将会合, 金星摧毁艾尔巴夫船首乌克兰姑娘远嫁中国, 三年后接母亲来华养老, 落地说: 终于安全了江苏徐州: 1938年7月, 美国人镜头里的鬼子、汉奸和伪军梦幻西游:老王光环队开启牟利模式,1小时竟能刷这么多?真强!布林肯喊话伊朗“莱希遇难会让你们日子更好”, 遭到伊民众愤怒反击年轻人的第1台插混SUV, 星途追风C-DM贸易商表示, 由于巴西价格坚挺, 中国购买美国大豆后来者“卷”上, 荣威D5X DMH技术与性价比齐发力欧冠经典!16年欧冠马竞再遇死敌皇马,西蒙尼又一次痛失冠军赖清德就任, 日本上蹿下跳, 中方针对琉球? 华春莹: 落实开罗宣言强力大锤李凯尔首节4中3独得7分 独行侠全队替补仅3分【每日精选】周四精选2串1: 尼美根往绩不落下风 前进之鹰出现慢热迹象章子怡抵达戛纳, 墨镜白衣状态超级美, 落地即被众多外国粉丝欢迎
最新回复(0)