SpringBoot之瘦身部署

SpringBoot瘦身打包部署 一、前言 最近做的项目由于引入第三方库导致在运行mvn clean package 打jar时,编译出来的 Jar 包很大(服务器多达500MB)。 二、瘦身前的Jar包 SpringBoot编译出来的Jar包中,磁盘占用大的,是一些外部依赖库(jar包),例如: 进入项目工程根目录,执行mvn clean package命令,得到的Jar包目录结构如下: 整个Jar包 524... 阅读详情

目录:

1.前言
2.瘦身前的Jar包
3.解决方案

一、前言

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

<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、后面如果需要变更业务逻辑,只需要轻量地编译工程,大大提高项目部署的效率。

【SpringBoot】32、SpringBoot项目Jar包如何瘦身部署 一、背景 SpringBoot 为我们快速开发提供了很好的架子,使得我们只需要少量配置就能开始我们的开发工作,但是当我们需要打包上传部署时,却是很神伤的一个问题,因为打出来的 Jar 包少则十几兆,多则一百来兆,我们需要上传至公网服务器时,是非常慢的,这就引出了今天的主题,SpringBoot项目Jar包如何瘦身部署 1、思路 分析 jar,我们可以看出,jar 包里面分为以下三个模块 分为 BOOT-INF,META-INF,org 三个部分,打开 BOOT-INF 可以看到有 classes,li 阅读详情

相关推荐

VS code平台调试AutoLISP程序教程

VS code平台调试AutoLISP程序教程

BearElder的博客 3184

瘦身Spring Boot应用(thinJar)

瘦身Spring Boot应用(thinJar)

白石的专栏 2715

从FreeCAD到BIMBase:PlaneGCS约束求解器的移植使用指南

本文为BIMBase平台的开发者提供了一份详细的PlaneGCS几何约束求解器移植与集成指南。文章深入探讨了如何从FreeCAD中提取PlaneGCS核心代码,并将其适配到BIMBase的C++二次开发环境中,重点解决了内存管理、数据模型桥接、约束抽象以及性能调优等关键问题,旨在帮助开发者构建稳定高效的参数化设计模块。

weixin_29213525的博客 320

SpringBoot 增量部署发布

由于项目依赖的jar越来越多,Springboot默认的打包方式是将整个项目打包成一个jar包,每次发布时,打包后的jar越来越大,更新一个很小的功能,需要将整个jar上传运行。这样效率太低了,考虑实现每次发布时,只发布修改了的部分,实现增量发布。

清山博客 1679

解锁 STP 与 SOLIDWORKS 转换密码:工具及迪威在线转换秘籍

STP 文件能够完整地记录 3D 模型的几何形状、尺寸、公差、材料属性等丰富信息,无论是简单的机械零件,还是复杂的装配体,都能精准呈现。而在线转换以迪威模型为例,凭借便捷性、高效性和安全性,为广大 3D 专业技术人员和学生党在无需安装额外软件的情况下,轻松实现格式转换提供了有力支持。在实际工作和学习中,可根据自身具体情况灵活选择合适的转换方式,以确保 3D 设计工作流程的顺畅进行,让创意在不同格式间自由流动并绽放光彩。在 3D 设计与建模的广袤世界里,不同格式文件间的转换常常是连接创意与实现的关键桥梁。

技术说明博主 3445

PLC编程入门基础知识

PLC即为可编程逻辑控制器,实质是一种专用于工业控制的计算机,其硬件结构基本上与微型计算机相同。

SANRENYIXING的博客 2万+

spring-boot jar包瘦身(fat-jar到thin-jar)

目前我司采用内网自建GitLab平台托管代码,fat-jar方式打包,每个应用jar包达到百兆。为了规避云服务带宽不足导致上次jar包缓慢的问题,我们在云服务器上安装了GitLab Runner(:依赖jar可以分离出来,从而保证我们打包出来的应用jar包很小(可能只有几兆甚至更小),而依赖jar在大部分情况下是不会改变的,所以每次发布的时候只需要把应用jar包上传即可。:所有的依赖都打到一个jar里面,导致jar包非常大(一个jar包上百兆),不利用网络传输(特别是云服务器来说带宽资源比较贵);...

xiaoming的博客 1228

RAGFlow体验大提升:使用GPU加速

场景:在正常部署过程中,启动RAGFlow会用到docker-compose.yml文件来启动。但是在实际使用过程中,会发现RAGFlow极其的卡和笨重,给一一种很不好的用户体验,有没有一种可以让RAGFlow加速的呢?进入RAGFlow的docker目录下会有发现有很多docker的配置文件。方法一:选择docker-compose-gpu.yml这个来启动项目。两个方法选其一 ,就会让你的RAGFlow的使用起来非常的丝滑!方法二:在docker-compose.yml末尾加上。

Ven%的博客 3156

SpringBoot实现增量部署

进行增量打包后,如果前端有不涉及到后端的修改时都可以对resource中的文件进行替换,且不用重启服务。后端如果有更改,只用更新有变化的jar包即可。如果在项目修改过程中引用了新的jar包,需要把新引用的jar包上传至lib文件夹。最近发现公司发布版本时候,很齐全,接口文档,部署方式等都很好,其中有个增量部署包,有点兴趣,不清楚怎么生成增量包和部署增量包的,特此记录一下。其中可执行包打包的就是除了lib文件夹外其他所有文件的打成的通用包。也可以打成zip包,上传到项目中解压后执行启动命令。

zouyang920的博客 1127

UE4打包为Framework库嵌入iOS原生工程

UE4打包为Framework库嵌入iOS原生工程

tangfuling1991的博客 1294

基于强化学习的多无人机路径规划

我们使用了Dueling Double Deep Q-Network(DDDQN)算法来训练智能体,这个算法在深度Q学习算法的基础上进行了升级,具有更快的收敛速度和更好的性能。本文提出了一种基于强化学习的算法,实现了多无人机路径规划,并提供相应的MATLAB代码。通过基于强化学习的多无人机路径规划算法,我们能够高效地解决复杂环境下的任务需求,并在实际应用中取得了良好的效果。首先,我们定义了状态空间和动作空间。实验结果表明,我们的方法能够有效地解决多无人机路径规划问题,提高了任务完成的效率和准确率。

DjjPython的博客 820

spirng boot 打包,胖fat包和瘦thin包

打胖fat包采用的是spring的标准来执行,所以使用的是spring boot提供的打包插件。打瘦thin包,采用的是比较多的组件组合,启动采用的是java的cp命令来加载classpath.

shenyunsese的专栏 3077

windows下宝塔安装教程

windows下宝塔安装教程 目录宝塔是什么?宝塔安装流程1.下载2.配置3.登录4.安装的环境套件小结 宝塔是什么? 宝塔是管理服务器的免费的软件,宝塔上面可以进行对你的服务器批量进行管理,对于运维人员来说还是必不可少的一个软件,值得使用。 宝塔安装流程 1.下载 链接: https://download.bt.cn/win/panel/BtSoft.zip 下载后安装买最好自定义目录,方便找 2.配置 下载完成后会出现这个页面,对着页面进行配置 点击默认密码复制进来,这里注意一点就是一定要查看

你在看屏幕的同时,屏幕也在注视着你 4423

SpringBoot之jar瘦身打包部署

SpringBoot服务采用jar瘦身的方式进行部署: 、背景 SpringBoot 为我们快速开发提供了很好的架子,使得我们只需要少量配置就能开始我们的开发工作, 但是当我们需要打包上传部署时,却是很神伤的一个问题,因为打出来的 Jar 包少则十几兆,多则一百来兆, 如果服务器部署在公司内网,速度还行,我们需要上传至公网服务器时,是非常慢的,编译出来的 Jar 包很大, 如果工程引入了许多开源组件(Spring Cloud等),那就更大了。这个时候如果想要对线上运行工程有一些微调,则非常痛苦。 这就引出了

Lucky_0804的博客 910

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

基于springboot项目的瘦身部署

JAVA项目瘦身部署基于springboot项目的瘦身部署jar包生成错误解决总结 基于springboot项目的瘦身部署 基于公司业务,公司项目架构都是拆分的各个小服务。每次更新迭代jar包传输是个头疼的问题。因为打出来的 Jar 包有的特别大,我们需要上传至公网服务器时,是非常慢的。所以特此对SpringBoot项目Jar包进行瘦身部署。 其实,在众多微小的服务中,引用的依赖jar都大致相同,打到各个服务模块中一遍又一遍。我们可以把jar都提取到一个公共包下。让各个服务从公共依赖包下加载jar。如下:

meng_9543的博客 1669

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

SpringBoot快速瘦身,快速部署jar

文章目录本片要点正常打包部署的方式瘦身部署拿到lib目录改变默认的打包方式再次打包上传lib和jar源码下载参考阅读 本片要点 介绍如何为jar包瘦身,方便部署。 正常打包部署的方式 之前已经在文章中介绍详细部署的过程:SpringBoot项目部署到Linux服务器并发布。 但是,这种做法有一些问题,就是每次上传jar包到服务器的时候都要很久。为什么呢?也许我们只是创建了一个最基本的SpirngBoot项目,也许我们只是写了三四行代码,最后生成的jar包大小也大的离谱,足足有17M,原因在于生成的可执行

天乔巴夏丶 256

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

如何优雅的给SpringBoot部署的jar包瘦身?

我们知道Spring Boot项目,是可以通过java -jar 包名启动的。 那为什么Spring Boot项目可以通过上述命令启动,而其它普通的项目却不可以呢?

Javatutouhouduan的博客 2221

【微服务】SpringBoot服务瘦身部署

SpringBoot 应用瘦身顾名思议:就是将 SpringBoot 应用打包的 jar 利用合理的方式、方法减小体积。

开发学习工作日志 933

springboot瘦身部署

1.pom.xml中 根据以下这个配置进行修改即可 <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>s...

苏一念的博客 380

怎么给java代码瘦身_SpringBoot项目Jar包如何瘦身部署的实现

一、背景SpringBoot 为我们快速开发提供了很好的架子,使得我们只需要少量配置就能开始我们的开发工作,但是当我们需要打包上传部署时,却是很神伤的一个问题,因为打出来的 Jar 包少则十几兆,多则一百来兆,我们需要上传至公网服务器时,是非常慢的,这就引出了今天的主题,SpringBoot项目Jar包如何瘦身部署1、思路分析 jar,我们可以看出,jar 包里面分为以下三个模块分为 BOOT-I...

weixin_31586521的博客 653

SpringBoot项目Jar包瘦身部署

一、背景 SpringBoot 为我们快速开发提供了很好的架子,使得我们只需要少量配置就能开始我们的开发工作,但是当我们需要打包上传部署时,却是很神伤的一个问题,因为打出来的 Jar 包少则十几兆,多则一百来兆,我们需要上传至公网服务器时,是非常慢的,这就引出了今天的主题,SpringBoot项目Jar包如何瘦身部署 1、思路分析 jar,我们可以看出,jar 包里面分为以下三个模块 分为 BOOT-INF,META-INF,org 三个部分,打开 BOOT-INF 可以看到有 classe

weixin_42290901的博客 546

SpringBoot 增量/瘦身部署jar 包

SpringBoot 项目的部署一般采用全量jar 包方式部署相关项目,如果我们对相关的Contrller\Service\Dao\Mapper 层进行相关业务调整就需要重新编译全量jar 包(包大小约为200M左右)实在太麻烦了。第二步:修改SpringBoot 项目默认:spring-boot-maven-plugin插件,添加如下配置。本文:重点讲解使用SpringBoot 的增量/瘦身部署方式,把引用的jar 和静态资源分离。SpringBoot 增量/瘦身jar 大小截图。

zhouzhiwengang的专栏 1596

SpringBoot 的 Jar 瘦身部署

一、前言SpringBoot部署起来虽然简单,如果服务器部署在公司内网,速度还行,但是如果部署在公网(阿里云等云服务器上),部署起来实在头疼:编译出来的 Jar 包很大,...

xmt1139057136的专栏 1649
上一篇: Spark RDD Cache缓存使用详解
下一篇: SpringBoot之热部署
yjgithub
博客等级 码龄11年 53粉丝 105原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值