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

Maven打包实践:实现代码与三方依赖分离

一、前言

在实际项目中,经常会遇到这样的问题。自己的业务代码就十几KB,结果项目打包后,整个jar包却达到了上百MB,受限于网络等限制,导致升级一次功能会非常耗时。这里我们就介绍下如何将自己的代码和三方依赖分开,如果不变动依赖,每次只升级自己的代码部分就可以。

二、实践

2.1 修改pom.xml

<plugins><!-- 让 JAR 知道主类是哪个 --><plugin><artifactId>maven-jar-plugin</artifactId><version>3.2.0</version><configuration><archive><manifest><mainClass>com.wno704.WnoQuartzAdminApplication</mainClass></manifest></archive><outputDirectory>${project.build.directory}/output</outputDirectory></configuration></plugin><!--配置了maven坐标,会把依赖放入project.build.directory的output/lib下--><!-- 拷贝依赖到 lib 目录 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><version>3.1.2</version><executions><execution><id>copy-dependencies</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><outputDirectory>${project.build.directory}/output/lib</outputDirectory></configuration></execution></executions></plugin></plugins>

注意:mainClass需要指定项目的主类,springboot项目就是SpringBootApplication所在的类。

2.2 项目启动

由于根据以上的pom文件,打包会将自己的代码成一个干净的 xxx.jar(仅包含 .class、资源等,不含依赖);三方依赖打包输出到 lib/ 子目录中,便于管理、替换、升级。这样我们每次升级只需要替换自己的xxx.jar就可以了。

这个时候,我们的启动脚本要修改如下:

java -cp “wnoQuartzAdmin.jar;lib/*” com.wno704.WnoQuartzAdminApplication

注意:其中wnoQuartzAdmin.jar为自己代码生成的jar包。

最后项目启动如下:

系统访问也正常

http://www.jsqmd.com/news/1158678/

相关文章:

  • WordPress插件管理与代码规范:提升网站性能与安全性的最佳实践
  • 2026年7月无锡钢制地板/无锡金属地板铺设生产企业哪家专业_无锡福威金属制品有限公司 - 行业平台推荐
  • LlamaIndex实战指南:从RAG原理到生产部署
  • Zotero 9.0.6 发布:对话框优化、多问题修复,提升文献管理体验
  • 2026年OpenClaw智能体框架云原生部署实战:基于阿里无影+Docker的可审计AI工作流
  • 如何用10美元鼠标在macOS上获得超越苹果触控板的体验?Mac Mouse Fix完全指南
  • 平衡小车MPU6050姿态解算:互补滤波与卡尔曼滤波3种实现方案对比
  • 3款主流 RS485 收发器对比:ISO3082 vs MAX485 vs SN75176 在 EMI 与功耗实测
  • IndexedDB、Cache storage 和 Storage buckets
  • Kali Linux国内镜像源配置全攻略:解决无法定位软件包与加速更新
  • AI模型训练与推理计算量差异分析及优化实践
  • 影刀RPA Python Pandas表格数据处理:比Excel指令强大10倍
  • Tabby终端分屏终极指南:如何高效管理多任务工作流
  • 阿里云国际站服务器购买:Linux包管理依赖冲突解决方案:环境变量不生效的避坑指南
  • ARP协议实战:Wireshark抓包解析28字节数据帧与18字节填充
  • Python 3.12 文本数据提取实战:从政府工作报告中高效抓取 100+ 数字短句
  • 专用AI推理芯片设计:TPU/ASIC、矩阵乘法与注意力计算的硬件协同
  • 地表蒸散发遥感产品信息提取验证与融合实践应用
  • 数据科学项目Docker容器化最佳实践:从本地开发到K8s生产部署
  • 批量恶意注册,正在把游戏发行团队带进“假增长”陷阱
  • 51单片机定时器T0/T1 4种工作方式对比:从13位到16位,初值计算与适用场景
  • Edge浏览器设置谷歌AI搜索:原理、步骤与问题排查指南
  • 23年纷争未休!2026年上诉法院再听证,“Unix到底是谁的”官司何时休?
  • 2026年7月加装电梯/南充老旧小区加装电梯施工单位哪家靠谱_四川真聚力电梯有限责任公司 - 行业平台推荐
  • 2024年Web自动化测试实战选型:Selenium、Cypress、Playwright深度对比与免费工具链
  • 基于python多光谱遥感数据处理、图像分类、定量评估及机器学习方法应用
  • 基于ADS127L11和MK64FX512VDC12的高精度ADC系统设计
  • 为啥提效仍然没效?
  • 提示词工程:从基础概念到工程化实践的完整指南
  • 开放权重模型:技术原理、地缘竞争与本地部署实践