当前位置: 首页 > news >正文

spring-boot-maven-plugin插件 —— 打包时减小jar包的大小方法

Maven 在打包时会将所依赖的 jar 包全部打包进去,包含了所有的依赖和资源文件,就会导致打出来的包比较大。如果再上传服务器,那么耗时特别长。

由于依赖包变化小,占用空间大,而且大部分情况是添加一次后,就会很少去做调整;但每次修改代码,都需要重新把他们构建 jar 中去,往服务器上传、发布,生成大量的资源、带宽、时间的浪费。

于是通过 pom.xml 配置把 lib 和 jar 拆开,配置如下:

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot-dependencies.version}</version><configuration><!-- 指定该jar包启动时的主类[建议] --><mainClass>com.xh.pack.PachApplication</mainClass><!--使用-Dloader.path需要在打包的时候增加<layout>ZIP</layout>,不指定的话-Dloader.path不生效--><layout>ZIP</layout><!--这里是填写需要包含进去的jar,必须项目中的某些模块,会经常变动,那么就应该将其坐标写进来,如果没有则nothing ,表示不打包依赖 --><includes><include><!-- 排除所有Jar --><groupId>nothing</groupId><artifactId>nothing</artifactId></include></includes></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin><!--拷贝依赖到jar外面的lib目录--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><version>3.1.1</version><executions><!--导出所有的 jar 包--><execution><id>copy-dependencies</id><!-- 在实际打包中,执行任何的必要的操作。 --><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><!--指定的依赖路径--><outputDirectory>${project.build.directory}/lib</outputDirectory></configuration></execution></executions></plugin></plugins>
</build>

这种方式打的包,在项目启动时,需要通过 -Dloader.path 指定 lib 的路径

java -Dloader.path=./lib -jar xxx.jar

如果引用的依赖是自己公司的其它模块或私有的依赖,那么就不宜打到外部的 lib,不然就会需要经常上传更新。可以使用保留依赖的方式把依赖文件打包到 jar 中。

补充

layout 配置与 META-INF/MANIFEST.MF 下的信息息息相关,配置关系如下:

JAR:即通常的可执行 jar。

Main-Class: org.springframework.boot.loader.JarLauncher

WAR:即通常的可执行war,需要的servlet容器依赖位于WEB-INF/lib-provided

Main-Class: org.springframework.boot.loader.warLauncher

ZIP:即DIR,类似于JAR

Main-Class: org.springframework.boot.loader.PropertiesLauncher

MODULE:将所有的依赖库打包(scope为provided的除外),但是不打包Spring Boot的任何Launcher

NONE:将所有的依赖库打包,但是不打包Spring Boot的任何Launcher

相关文章:

spring-boot-maven-plugin插件 —— 打包时减小jar包的大小方法

Maven 在打包时会将所依赖的 jar 包全部打包进去&#xff0c;包含了所有的依赖和资源文件&#xff0c;就会导致打出来的包比较大。如果再上传服务器&#xff0c;那么耗时特别长。 由于依赖包变化小&#xff0c;占用空间大&#xff0c;而且大部分情况是添加一次后&#xff0c;就…...

java Bigdecimal

一、BigDecimal概述 BigDecimal是Java在java.math包中提供的线程安全的API类&#xff0c;用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数&#xff0c;但在实际应用中&#xff0c;可能需要对更大或者更小的数进行运算和处理。一般情况下&am…...

【C++11并发】thread 笔记

简介 进程和线程的区别 进程&#xff1a;一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间&#xff0c;一个进程可以有多个线程&#xff0c;比如在Windows系统中&#xff0c;一个运行的xx.exe就是一个进程。 线程&#xff1a;进程中的一个执行任务&#xff08…...

OBS Studio免费开源录屏工具

OBS是Open Broadcaster Software的缩写&#xff0c;是一款免费且开源的多平台录屏和直播软件。它可以用于录制屏幕、捕获游戏、创建教学视频、直播游戏等。OBS功能强大且灵活&#xff0c;提供了许多配置选项和自定义功能&#xff0c;使用户能够根据自己的需求进行设置和调整。它…...

【汇编】[bx+idata]的寻址方式、SI和DI寄存器

文章目录 前言一、[bxidata]寻址方式1.1 [bxidata]的含义1.2 示例代码 二、SI和DI寄存器2.1 SI和DI寄存器是什么&#xff1f;2.2 [bxsi]和[bxdi]方式寻址2.3 [bxsiidata]和[bxdiidata] 总结 前言 在汇编语言中&#xff0c;寻址方式是指指令如何定位内存中的数据。BX寄存器与偏…...

Java,集合框架,关于Map接口与Collections工具类

目录 Map接口 Map及其实现类的对比&#xff1a; HashMap中元素的特点&#xff1a; 相关方法&#xff1a; 添加、修改操作: 删除操作&#xff1a; 元素查询的操作: 元视图操作的方法&#xff1a; TreeMap的使用&#xff1a; Properties类&#xff1a; Collections工具…...

【实用技巧】更改ArduinoIDE默认库文件位置,解放系统盘,将Arduino15中的库文件移动到其他磁盘

本文主要介绍更改Arduino IDE &#xff08;含2.0以上版本&#xff09;默认库文件位置的方法。 原创文章&#xff0c;转载请注明出处&#xff1a; 【实用技巧】更改ArduinoIDE默认库文件位置&#xff0c;解放C盘&#xff0c;将Arduino15中的库文件移动到其他磁盘-CSDN博客文章浏…...

二、什么是寄存器

目录 一、STM32芯片架构简图及系统框图 1.1 STM32芯片架构简图 1.1.1 FLASH是什么&#xff0c;用来做什么 1.1.2 SRAM是什么&#xff0c;用来做什么 1.1.3 片上外设是什么&#xff0c;用来做什么 1.2 系统框图 1.2.1 驱动单元 1.2.2 被动单元 二、什么是寄存器 2.1 存…...

邀请报名|11月24日阿里云原生 Serverless 技术实践营 深圳站

活动简介 “阿里云云原生 Serverless 技术实践营 ” 是一场以 Serverless 为主题的开发者活动&#xff0c;活动受众以关注 Serverless 技术的开发者、企业决策人、云原生领域创业者为主&#xff0c;活动形式为演讲、动手实操&#xff0c;让开发者通过一个下午的时间增进对 Ser…...

学习UI第一天

在工作闲暇之余&#xff0c;自己画的原型图&#xff0c;再次做一次记录&#xff0c;哈哈哈 萌宠领养UI设计原型图 https://modao.cc/proto/lq2KqIVBs48xwylNZlA7OP/sharing?view_moderead_only #萌宠领养-分享 可以点击此链接&#xff0c;进行查看O(∩_∩)O哈哈~...

1688商品详情原数据(2023年11月最新版)

返回数据&#xff1a; 请求链接 {"item": {"desc_wdescContent": {"itemProperties": [],"offerId": "705844836943","wdescContent": {"content": "<div id\"offer-template-0\"&g…...

CleanMyMac X2024免费测试版好不好用?值不值得下载

如果你是一位Mac用户&#xff0c;你可能会遇到一些问题&#xff0c;比如Mac运行缓慢、磁盘空间不足、应用程序难以管理等。这些问题会影响你的Mac的性能和体验&#xff0c;让你感到沮丧和无奈。那么&#xff0c;有没有一款软件可以帮助你解决这些问题呢&#xff1f;答案是肯定的…...

Linux操作文件的底层系统调用

目录 1.概述 2.open的介绍 3.write 的介绍 4.read 5.close的介绍 6.文件描述符 1.概述 C语言操作文件的几个库函数:fopen,fread,fwrite,fclose; 系统调用:open,read,write,close; 系统调用方法实现在内核中;(陷入内核,切换到内核) 2.open的介绍 open重载:两个参数用于打…...

steam搬砖项目2023年现状分析,到底还能不能做?

关于CSGO游戏搬砖项目的5大认知误区 当前的steam搬砖项目市场正变得混乱不堪。你对该项目的了解程度决定了你是否能在这个生态系统中获得收益。 假设你有100万资金&#xff0c;想要全部投入搬砖事业&#xff0c;但对项目一无所知&#xff0c;只看中收益。即使你有充足的资金&a…...

【论文阅读】基于隐蔽带宽的汽车控制网络鲁棒认证(二)

文章目录 第三章 识别CAN中的隐藏带宽信道3.1 隐蔽带宽vs.隐藏带宽3.1.1 隐蔽通道3.1.2 隐藏带宽通道 3.2 通道属性3.3 CAN隐藏带宽信道3.3.1 CAN帧ID字段3.3.2 CAN帧数据字段3.3.3 帧错误检测领域3.3.4 时间通道3.3.5 混合通道 3.4 构建信道带宽公式3.5通道矩阵3.6 结论 第四章…...

string类的常用方法

string类是C中一个非常常用的类&#xff0c;它提供了许多方法来操作字符串。以下是一些常用的string类方法&#xff1a; 构造函数: string(): 创建一个空的字符串。 string(const char* str): 用一个C风格字符串来初始化一个新的字符串。string(size_t n, char c): 创建一个由…...

Java面向对象(高级)-- 单例(Singleton)设计模式

文章目录 一、单例设计模式&#xff08;1&#xff09; 设计模式概述&#xff08;2&#xff09; 何为单例模式&#xff08;3&#xff09; 实现思路&#xff08;4&#xff09; 单例模式的两种实现方式1. 饿汉式2. 懒汉式3. 饿汉式 vs 懒汉式 &#xff08;5&#xff09; 单例模式的…...

【Kingbase FlySync】命令模式:安装部署同步软件,实现Oracle到KES实现同步

【Kingbase FlySync】命令模式:安装部署同步软件&#xff0c;实现Oracle到KES实现同步 一.准备工作二.环境说明三.目标四.资源虚拟机 五.实操(1).准备安装环境Orcle服务器(Oracle40)1.上传所有工具包2.操作系统配置a.增加flysync 用户、设置密码b.配置环境变量c.调整limits.con…...

2311d导入c的语义不同

原文 以下D代码正常工作: enum X "X"; import core.stdc.stdio; void main(){puts(X); }但是,如果该X枚举是C文件中#define的结果,则会出现错误: //x.c #define X "X" //D代码 import x; import core.stdc.stdio; void main(){puts(X); //错误 }错误:不…...

OpenHarmony Meetup北京站招募令

OpenHarmony Meetup城市巡回北京站火热来袭&#xff01;&#xff01;日期&#xff1a;2023年11月25日14:00地点&#xff1a;中国科学院软件园区五号楼B402与OpenHarmony技术大咖近距离互动&#xff0c;分享技术见解&#xff0c;结交志同道合的朋友&#xff01;活动主题聚焦Open…...

如果夫妻双方也不愿意带孩子,家里也没有老人带孩子,还有必要生2胎吗?

这个问题没有绝对答案,需要结合你家的经济条件、精力储备和夫妻共识综合判断,没人带并不是一定不能生,但普通家庭确实要谨慎决策‌。结合你目前在南昌、夫妻二人都要兼顾工作的情况,帮你梳理核心决策维度: ✅ 满足以下条件,可以考虑生 经济条件足够支撑‌:你月收入2万以…...

监控邮箱/邮箱自动回复/python

主题&#xff1a;QQ邮箱的实时监控和自动回复实现QQ邮箱的实时监控和自动回复思路&#xff08;代码&#xff09;&#xff1a;1. 获取QQ邮箱授权码只有开启了QQ邮箱的IMAP SMTP服务&#xff0c;才能路径&#xff1a;登录QQ邮箱->设置->账号与安全->开启 IMAP/SMTP服务大…...

跨平台B站视频下载终极指南:如何用BilibiliDown轻松搞定离线观看

跨平台B站视频下载终极指南&#xff1a;如何用BilibiliDown轻松搞定离线观看 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh…...

如何用Shutter Encoder解决专业视频工作流中的格式兼容性问题:5步完整指南

如何用Shutter Encoder解决专业视频工作流中的格式兼容性问题&#xff1a;5步完整指南 【免费下载链接】shutter-encoder A professional video compression tool accessible to all, mostly based on FFmpeg. 项目地址: https://gitcode.com/gh_mirrors/sh/shutter-encoder …...

Joy-Con Toolkit:一站式解决Switch手柄所有问题的智能管理工具

Joy-Con Toolkit&#xff1a;一站式解决Switch手柄所有问题的智能管理工具 【免费下载链接】jc_toolkit Joy-Con Toolkit 项目地址: https://gitcode.com/gh_mirrors/jc/jc_toolkit Joy-Con Toolkit是一款专为Nintendo Switch手柄设计的开源管理工具&#xff0c;为游戏玩…...

无监督聚类中的特征选择:原理、陷阱与工业级实践

1. 项目概述&#xff1a;为什么无监督聚类中的特征选择&#xff0c;比你想象中更难也更重要“Feature selection for unsupervised problems: the case of clustering”——这个标题乍看像一篇论文的副标题&#xff0c;但如果你真在工业场景里做过客户分群、设备异常模式挖掘、…...

Schwinger模型与轴子动力学:量子模拟中的强CP问题研究

1. Schwinger模型与强CP问题概述Schwinger模型作为11维的量子电动力学(QED)&#xff0c;长期以来被视为研究规范场论非微扰效应的理想试验场。这个看似简单的理论却蕴含着丰富的物理内涵&#xff1a;轴向反常、非平庸真空结构以及拓扑θ项等特性&#xff0c;使其成为理解高维规…...

从‘微软 ORG’到流畅中文NLP:你的zh_core_web_sm模型真的装对了吗?

从‘微软 ORG’到流畅中文NLP&#xff1a;你的zh_core_web_sm模型真的装对了吗&#xff1f; 当你在Spacy中加载zh_core_web_sm模型&#xff0c;运行示例文本"微软准备用十亿美金买下这家英国的创业公司"后&#xff0c;看到"微软"被正确标记为ORG&#xff0…...

Hive 3.1.3部署后,你可能会遇到的3个连接与权限报错及解决实录

Hive 3.1.3部署后三大经典连接与权限问题深度解析 当你终于按照教程完成Hive 3.1.3的安装&#xff0c;却在最后连接阶段遭遇各种"拦路虎"时&#xff0c;那种挫败感我深有体会。本文将带你直击三个最具代表性的连接与权限问题&#xff0c;从报错现象到根因分析&#x…...

机器学习---监督学习入门实验全攻略(小白友好版)

新晋码农一枚&#xff0c;小编会定期整理一些写的比较好的代码和知识点&#xff0c;作为自己的学习笔记&#xff0c;试着做一下批注和补充&#xff0c;转载或者参考他人文献会标明出处&#xff0c;非商用&#xff0c;如有侵权会删改&#xff01;欢迎大家斧正和讨论&#xff01;…...