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

news2024/9/24 17:21:05

(内容学习于up主"编程不良人")

SpringBoot瘦身实战

什么是jar瘦身

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

为什么瘦身

SpringBoot虽然很方便就能搭建起来一个服务,带来的问题就是jar包很大。
这是自己搭建的微服务项目,file服务中,总代码文件不到10个,打包出来的jar已经快80M。
实际项目中打包出来的jar,已经达130M+。
在这里插入图片描述

虽然使用jenkins自动化部署已经很方便了,但如果jenkins与目标服务器不是在同一内网下,传输还是很慢。

瘦身部署实战

修改spring-boot-maven-plugin配置

  <build>
        <resources>
            <resource>
                <directory>src/main/resources/</directory>
                <includes>
                    <include>**/*.yml</include>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                    <include>**/*.html</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/resources/</directory>
                <filtering>false</filtering>
                <excludes>
                    <exclude>**/*.yml</exclude>
                    <exclude>**/*.xml</exclude>
                    <exclude>**/*.properties</exclude>
                </excludes>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                    <encoding>utf-8</encoding>
                    <resources>
                        <resource>
                            <directory>src/main/resources/</directory>
                            <filtering>true</filtering>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <target>1.8</target>
                    <source>1.8</source>
                    <encoding>utf-8</encoding>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.2.4.RELEASE</version>
                <configuration>
                    <mainClass>pers.kw.CrmServer</mainClass>
                    <includeSystemScope>true</includeSystemScope>
                    <fork>true</fork>
                    <!--解决windows命令行窗口中文乱码-->
                    <jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
                    <layout>
                        ZIP
                    </layout>
                    <includes>
                        <!--这里是填写需要包含进去的jar,
                        	必须项目中的某些模块,会经常变动,那么就应该将其坐标写进来
                        	如果没有则non-exists ,表示不打包依赖
                        -->
                        <include>
                            <groupId>non-exists</groupId>
                            <artifactId>non-exists</artifactId>
                        </include>
                    </includes>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <!--repackage:创建一个自动可执行的jar或war文件。它可以替换常规的artifact,或者用一个单独的classifier附属在maven构建的生命周期中。-->
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

导出依赖包

方式一 mvn插件

增加maven-dependency-plugin插件配置

<!-- 此插件用于将依赖包抽出-->
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>
  <version>3.1.1</version>
  <executions>
    <execution>
      <id>copy-dependencies</id>
      <phase>package</phase>
      <goals>
        <goal>copy-dependencies</goal>
      </goals>
      <configuration>
        <outputDirectory>${project.build.directory}/lib</outputDirectory>
        <!--是否排除传递性-->
        <excludeTransitive>false</excludeTransitive>
        <!--是否去掉 jar 包版本信息-->
        <stripVersion>false</stripVersion>
        <!--包含范围-->
        <includeScope>runtime</includeScope>
      </configuration>
    </execution>
  </executions>
</plugin>

方式二 mvn命令

mvn dependency:copy-dependencies -DoutputDirectory=指定输出目录

测试运行

前台启动

java -jar -Dloader.path="./lib" kw-crm-service-1.0.0.jar

在这里插入图片描述

后台启动

nohup java -jar -Dloader.path="./lib" kw-crm-service-1.0.0.jar > /dev/null 2>&1 &

ps: 在mac中使用nohup命令,不知为何自动退出了。。。
在linux中测试成功

补充:如果是docker部署,则需要把lib进行挂载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/713151.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity使用puerTS使用typescript

puerts即为普洱TS,腾讯开源的ts热更方案.项目github:https://github.com/Tencent/puerts 准备工作:Unity 2021.3.25f1 nodejs v16.13.1 1.下载puerts 地址:https://github.com/Tencent/puerts/releases 版本随便选. 解压好,将puerts文件夹放到assets/ 下.如图: 2.生成代码. 3.在…

CSDN APP 2023 上半年 - 不忘初心砥砺前行

这是 2022 年下半年的汇报​​​​​​​ 这是 2022 年上半年的汇报​​​​​​​ 这是 2021 年年底的汇报​​​​​​​​​​​​​​ 转眼 2023 年已然过半&#xff0c;今年是CSDN APP 第6个年头。相较于忙碌的21、22年。今年上半年我们功能的迭代少了很多&#xff0c;更…

Web APls-day02

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 事件监听&#xff08;绑定&#xff09; 事件类型 鼠标事件 焦点事件 键盘事件 文本事件 事…

旅游卡小程序系统独立后台软件开发

移动互联网的迅猛发展&#xff0c;旅游行业也迎来了前所未有的机遇。为了提供更好的旅游体验&#xff0c;越来越多的人选择使用旅游卡来进行旅行。为了更好地管理和运营旅游卡&#xff0c;开发一款高效的后台管理软件势在必行。 首先&#xff0c;该软件的核心功能是对旅游卡…

相对位置编码(relative position representation)

最近在看wenet项目时&#xff0c;发现其用的是相对位置编码。同时在做tts时&#xff0c;发现其效果还可以&#xff0c;但是就是对于长文本的生成效果不好&#xff0c;一直在思考是什么原因导致的&#xff0c;有想到最有可能是fastspeech是的绝对位置编码问题&#xff0c;所以还…

微信小程序,微信浏览器播放视频只有画面没声音问题处理

我这里遇到的场景是手机上的微信小程序,微信浏览器视频播放有问题,其他人的话可能是其他场景出现了问题. 最开始我以为是这里不支持m3u8的播放,因为微信小程序那里很多人都说遇到过这个问题,所以一直想着是修改播放器.一直到后来发现了一篇文章,这里找不到了,上面的大概意思是…

【2023,学点儿新Java-28】你知道Java中的特殊值都有什么吗?| null 的详细信息 | 什么是空引用?

前情回顾&#xff1a; 【2023&#xff0c;学点儿新Java-27】是的——C语言中的const关键字 | 附&#xff1a;按照类型 快速了解与划分&#xff1a;C语言中的关键字 | goto关键字解释【2023&#xff0c;学点儿新Java-26】关键字介绍示例代码&#xff1a;assert 断言&#xff08…

Atcoder Beginner Contest 308

A - New Scheme AC代码&#xff1a; #include<iostream> #include<algorithm> #include<cstring> #define int long long using namespace std; const int N 110; int a[N]; void solve() {for (int i 0; i < 8; i) cin >> a[i];if (a[0] < …

深度学习如何入门?

深度学习是一种强大的机器学习方法&#xff0c;它在各个领域都有广泛应用。如果你是一个新手&#xff0c;想要入门深度学习&#xff0c;下面是一些步骤和资源&#xff0c;可以帮助你开始学习和实践深度学习。 1. 学习基本概念 在开始深度学习之前&#xff0c;你需要对一些基本…

c语言修炼第二章--分支与循环(2.2)

目录 2.2循环语句 2.2.1while循环语句 2.2.2for语句 2.2.2.1for语句的语法形式 2.2.2.2break和continue在for语句中的应用 2.2.2.3关于for循环变量的建议 2.2.2.4for循环的一些变种 初始化&#xff0c;判断&#xff0c;调整都进行省略 使用多个变量控制循环 2.2.3do…

FreeRTOS_其他任务API函数

目录 1. 任务相关 API 函数预览 2. 任务相关 API 函数详解 2.1 函数 uxTaskPriorityGet() 2.2 函数 vTaskPrioritySet() 2.3 函数 uxTaskGetSystemState() 2.4 函数 vTaskGetInfo() 2.5 函数 xTaskGetApplicationTaskTag() 2.6 函数 xTaskGetCurrentTaskHandle() 2.7 …

AI 对“校园WiFi免认证的”的认知

校园WiFi免认证 很抱歉&#xff0c;我不能提供关于绕过校园WiFi认证的信息。绕过校园WiFi认证是违反校园网络使用规定的行为&#xff0c;可能会导致违纪处分或其他法律后果。建议你遵守校园网络使用规定&#xff0c;合法合规地使用校园WiFi。如果你有任何关于校园WiFi认证的问…

SpringBoot2+Vue2实战(九)集成Echarts

Vue下载Echarts npm i echarts -S echarts官网 快速上手 - Handbook - Apache ECharts2 引入&#xff1a; import * as echarts from "echarts" 一、示例 EchartsController RestController RequestMapping("/echarts") public class EchartsContr…

异常处理~

2&#xff1a;运行时异常 3&#xff1a;编译时异常 4&#xff1a;异常的默认处理 5&#xff1a;编译时异常的处理机制 2&#xff1a;异常处理方式1——throws throws: 用在方法上&#xff0c;可以将方法内部出现的异常抛出去给本方法的调用者处理这种方式不好&#xff0c;如果…

在IDEA中通过maven打包war包

在pom文件中加入这一句 <packaging>war</packaging> 然后打包就好了 war包文件目录

途乐证券|A股半年行情收官 北向净买入超1800亿元

上半年A股市场正式收官&#xff0c;在整体震荡的趋势下&#xff0c;上证指数、深证成指收涨&#xff1b;各板块行业分化态势凸显&#xff0c;通信、传媒、计算机等行业表现最为突出&#xff0c;商贸零售、房地产等行业跌幅居前。业内人士表示&#xff0c;上半年市场行情受产业趋…

企业所得税高怎么办?合理节税有哪些方式

企业所得税高怎么办&#xff1f;合理节税有哪些方式 《税筹顾问》专注于园区招商、企业税务筹划&#xff0c;合理合规助力企业节税&#xff01; 如今越来越多的企业深耕于创新与发展&#xff0c;这也是一种迎合市场的需求迫不得以需要进行的转变&#xff0c;很多企业所得税高的…

不看后悔,appium自动化环境完美搭建

桌面版appium提供可视化操作appium主要功能的使用方式&#xff0c;对于初学者非常适用。 如何在windows平台安装appium桌面版呢&#xff0c;大体分两个步骤&#xff0c;分别是依赖软件安装以及appium桌面版安装。以下是对这两个步骤的拆解文字加图片描述。 01、依赖软件安装 …

Google在AI领域的潜力被严重低估了

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 总结 &#xff08;1&#xff09;Google正在人工智能领域采取重大举措&#xff0c;推出了生成式人工智能聊天机器人Google Bard&#xff0c;并向人工智能初创公司Anthropic投资了3亿美元。 &#xff08;2&#xff09;Goo…

Dockerfile使用指南

Dockerfile使用指南 通过RUN执行指令Dockerfile改进版Dockerfile 文件复制和目录操作(ADD,COPY,WORKDIR)复制普通文件复制压缩文件 构建参数和环境变量(ARG vs ENV)ENVARG区别 容器启动命令CMD容器启动命令ENTRYPOINTShell格式和Exce格式Shell格式Excel格式 通过RUN执行指令 r…