You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将共用第三方Jar外置Tomcat 缩小War包并优化CI/CD部署?

第三方依赖分离至Tomcat公共目录的优化求助

环境

  • Java 17
  • Tomcat 9.x
  • Maven 3.8.4(搭配Codehaus Cargo插件)
  • Gitlab CI/CD

背景与优化目标

我们有5个Web应用,共用约100个第三方库(总大小约100MB),第三方依赖重叠率超90%,仅各应用有少量独有依赖。自研代码仅5-15MB,且依赖更新频率远低于自研代码,导致CI/CD中存在大量不必要的文件传输与解压操作。

我希望将所有第三方库分离至catalina/lib(或通过扩展catalina.properties的common-loader指定的自定义目录),以此大幅缩小应用War包体积,优化部署启动时间及远程部署时间(通过Cargo)——典型迭代中仅15%以下的代码变更,却要远程部署约115MB的包到集群,耗时过长。

我的优化计划

  1. 新建Git项目,将当前父POM中的所有依赖迁移至该项目
  2. 更新父POM,将新项目作为依赖引入,并设置scope为provided,避免这些Jar被打包进War
  3. 编写Maven脚本,将所有第三方Jar打包为fat jar(非shaded jar)
  4. 编写SFTP/Shell脚本(或使用Maven SSH插件),当库版本更新或需修复Bug时,将fat jar发布到生产及预发布服务器的$(catalina)/lib目录或自定义目录(已添加至common-loader属性)
  5. 现有Maven Cargo任务将大幅提速,仅需传输10-15MB;同时Tomcat部署更新后的War包也会更快,需解压的内容大幅减少

求助问题

请问有过此类实操经验的开发者吗?能否提供相关建议或需注意的陷阱?

内容的提问来源于stack exchange,提问作者Fred

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 21:22:53