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

springboot打包时依赖jar和项目jar分开打包;jar包瘦身

概述

最近感觉项目在部署时时jar包传输太慢了;
看了下jar包内容,除了项目代码,其余大部分都是依赖jar
平时改动较多的只是项目代码,依赖jar改动比较少;
所以就在想能不能分开打包;这样只部署项目代码的改动就快多了;

我的jdk版本:17
springboot版本:3.1.2

分开打包

将依赖的jar包都copy到项目执行jar外面路径中;
我这边copy到项目jar的同级目录中,也可以copy到其他路径

<!--拷贝依赖到jar外面的lib目录-->
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><executions><execution><id>copy</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration>                <!--指定的依赖路径--><outputDirectory>${project.build.directory}/lib</outputDirectory></configuration></execution></executions>
</plugin>

然后打包项目jar;有2种打包方式;

项目jar打包方式一:
依赖jar前加上class path;我上面的依赖jar的存放路径和项目jar在同一级下,所以这里直接加上路径lib即可;

启动的时候直接启动即可

java -jar xxx.jar
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>${maven-jar-plugin.version}</version><configuration><archive><manifest><!--addClasspath表示需要加入到类构建路径--><addClasspath>true</addClasspath><!--classpathPrefix指定生成的Manifest文件中Class-Path依赖lib前面都加上路径,构建出lib/xx.jar--><classpathPrefix>lib/</classpathPrefix><mainClass>org.qps.QpsAdminApplication</mainClass></manifest></archive></configuration>
</plugin>

在这里插入图片描述

项目jar打包方式二:
依赖jarcopy方式不变,调整打包插件和启动方式;但是我这边没有成功;
打包后依赖的确是分离了;但是启动的时候一直提示在依赖lib下找不到主类

<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><executable>true</executable><!-- 指定layout = ZIP;打包的时候就不会把依赖的jar一起当进去 --><layout>ZIP</layout><mainClass>org.qps.QpsAdminApplication</mainClass><!--解决windows命令行窗口中文乱码--><jvmArguments>-Dfile.encoding=UTF-8</jvmArguments><!--只包含自己--><includes><include><groupId>${groupId}</groupId><artifactId>${artifactId}</artifactId></include><!--依赖jar不打进项目jar包中--><!--<include><groupId>nothing</groupId><artifactId>nothing</artifactId></include>--></includes><!--不包含哪些--><!--<excludeGroupIds>--><!--com.hundsun.jrescloud,--><!--org.springframework.boot,--><!--org.springframework--><!--</excludeGroupIds>--></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions>
</plugin>

参考博文
https://www.cnblogs.com/kingsonfu/p/11431743.html

http://www.lryc.cn/news/217942.html

相关文章:

  • 嵌入式系统的元素
  • 提升ChatGPT答案质量和准确性的方法Prompt engineering实用的prompt灵感和技巧
  • [Machine Learning] Learning with Noisy Labels
  • 集简云slack(自建)无需API开发轻松连接OA、电商、营销、CRM、用户运营、推广、客服等近千款系统
  • Idea 对容器中的 Java 程序断点远程调试
  • vscode设置保存后,自动格式化代码
  • datagrip出现 java.net.ConnectException: Connection refused: connect.
  • Docker 安装ELK7.7.1
  • 决策树算法
  • maven之pom文件详解
  • 深度学习之基于Python+OpenCV+dlib的考生信息人脸识别系统(GUI界面)
  • 创建javaEE项目(无maven),JSP(九大内置对象)、Servlet(生命周期)了解
  • BIOS开发笔记 - HDA Audio
  • C语言——选择排序
  • vue详细安装教程
  • Java 正则表达式字符篇
  • shell脚本代码混淆
  • 【MATLAB第81期】基于MATLAB的LSTM长短期记忆网络预测模型时间滞后解决思路(更新中)
  • 订单业务和系统设计(一)
  • 安全模型的分类与模型介绍
  • I/O多路转接之select
  • “如何对TXT文件的内容进行连续行删除?实现一键文件整理!
  • stable diffusion公司发布4款LLM大语言模型,为何大家都喜爱LLM?
  • 堆排序--C++实现
  • 【数据结构】数组和字符串(十四):字符串匹配1:朴素的模式匹配算法(StringMatching)
  • VMWare虚拟机问题
  • 代码随想录算法训练营第23期day39 |62.不同路径、63. 不同路径 II
  • 白帽黑客入门,“每天一个黑客技巧”实现黑客的自我突破 !(附工具包!)
  • Jmeter参数化 —— 循环断言多方法
  • Autosar诊断实战系列26-Dem(DTCEvent)要点及配置开发详解