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

如何减小 Maven 项目生成的 JAR 包体积 提升运维效率

在使用 Maven 构建 Java 项目时,有时需要减小生成的 JAR 包的体积,以提高部署效率或减少资源消耗。以下是一些有效的方法来减小 JAR 包的体积:

  1. 排除不必要的依赖
  2. 打包时,依赖jar包独立于应用jar包

1. 排除不必要的依赖

通过排除项目中不需要的依赖,可以显著减小 JAR 包的体积。在 pom.xml 中,可以在 标签中使用 标签来排除特定的依赖。

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.5.4</version><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions></dependency><!-- 其他依赖项 -->
</dependencies>

2. 依赖jar包独立于应用jar包

一般来讲依赖不会经常变化,所以将 依赖 打包到应用外是个好主意,可以有效的减小应用包。

pom.xml 配置如下:

<!-- 打包时 依赖独立于项目jar包-->
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>3.2.0</version><configuration><archive><manifest><addClasspath>true</addClasspath><classpathPrefix>lib/</classpathPrefix><mainClass>com.github.nan.web.NanWebApplication</mainClass></manifest></archive></configuration></plugin><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}/lib</outputDirectory><includeScope>runtime</includeScope></configuration></execution></executions></plugin>

注意:第一部署应用 或者依赖有更新时,需要把依赖(lib)也上传到服务

效果如下:

├── target
│   ├── classes
│   ├── generated-sources
│   ├── lib
│   ├── maven-archiver
│   ├── maven-status
│   └── web-0.0.1-SNAPSHOT.jar

http://www.mrgr.cn/news/57815.html

相关文章:

  • 讲解机器学习中的 K-均值聚类算法及其优缺点。(AI)
  • 光储充微电网:策略调度带领能源新未来---安科瑞 吴雅芳
  • 【制造业&仓库】快递盒纸箱检测系统源码&数据集全套:改进yolo11-LAWDS
  • webpack生成的SourceMap更改生成路径
  • Ubuntu22.04 KVM安装笔记
  • ArcGIS002:软件自定义设置
  • 电脑屏幕录制哪个好?强烈推荐这几款
  • webGIS用在可视化大屏上,那效果还有啥话说。
  • FK743M5-XIH6核心板的学习
  • 数据驱动医院数字化转型之路
  • Pytorch Note
  • 雨课堂(长江云)如何自动刷课(无做题)
  • repo将每个仓库回退到第一个commit的状态
  • pandas库
  • 【系统配置】命令行修改统信UOS的grub启动延时
  • 打印堆栈信息
  • python实现数据库的增删改查功能,图形化版本
  • 2019-2020 CSP-J C++普及组 第一题题解汇编
  • nginx 隐藏版本号与WEB服务器信息(yum)
  • 用户身份和访问管理是保障企业数字化转型的安全基石
  • 地平线港交所挂牌上市,开启智能驾驶新征程
  • EFCore pgsql Join 查询
  • 502 错误码通常出现在什么场景?
  • c语言指针详解2
  • Java开发者必备!0元学习Maven环境最新版超详细配置教程
  • 安全见闻(9)——开阔眼界,不做井底之蛙