前情提要:近期发现jar包有点大,加上网速不给力,上传到远程服务器上时间有点长。于是想把jar包瘦身一下,网上冲浪了一下,有了以下内容。

原因

  • 代码编译后jar包大的主要原因是依赖包占了大量空间

解决方法

  • 修改POM文件,具体修改代码如下
<configuration><layout>ZIP</layout><includes><include><groupId>nothing</groupId><artifactId>nothing</artifactId></include></includes>
</configuration>

位置截图:

  • 在服务器上存放jar包的目录下,建个文件夹,存放依赖包,比如:/lib
  • 把POM中依赖的所有的包下载下来,上传到 /lib 目录下,mvn下载命令
mvn dependency:copy-dependencies -DoutputDirectory=D:\lib\step-robot-officeweb  -DincludeScope=runtime
  • 修改启动命令,加上 -Dloader.path=lib 即可
java -Dloader.path=lib -jar $JAR_FILE

完成以上步骤,jar包的瘦身基本就完成了。

思考:jar包瘦身后,只有几百K或者几M,上传速度飞起,但还是有一些不完美的地方。应用的依赖改变后,还要重新上传新的依赖,关键点在于,如何有效率的找到新增的依赖,如果新增的依赖少,还好些,新的依赖多的话,就有点得不偿失了,可能就要重新下载全部依赖重新上传,没法只做增量依赖上传,目前没找到合适的工具,查找每次的增量依赖。特别是对于分布式应用,应用之间相互依赖了大量的DTO/接口/工具类等,每个需求的改动,可能都有大量的依赖变动,每次都需要重新上传全部依赖的做法太不合适。

  • jar包瘦身,适用一些不常改变或者变化不大的,网络带宽不高的场景
  • 对于网络带宽高,依赖变化快的场景,按照全部打包上传方式或许更好

有好的查找依赖变化的工具,推荐下,谢谢

jar包瘦身的方法和思考相关推荐

  1. maven jar包瘦身

    springCloud项目系统瘦身记录 第一章 **尝试spring-boot-thin-launcher** Spring Boot项目可以通过spring-boot-maven-plugin插件打 ...

  2. springboot jar包瘦身

    文章目录 1.普通的打包方式 2.优化后的打包方式 3.遇到的问题 说明: 该博文基于springboot 2.4.2版本测试. 1.普通的打包方式 <build><plugins& ...

  3. 如何优雅的给SpringBoot部署的jar包瘦身?

    一.需求背景 我们知道Spring Boot项目,是可以通过java -jar 包名 启动的. 那为什么Spring Boot项目可以通过上述命令启动,而其它普通的项目却不可以呢? 原因在于我们在通过 ...

  4. 使用Spring Boot Thin Launcher 打包Spring Boot项目,jar包瘦身

    原文地址:https://www.jianshu.com/p/3fa4039d90d7 -------------------------------------------------------- ...

  5. 给你的SpringBoot工程打的jar包瘦瘦身

    Spring boot默认方式打包由于打的是全量依赖包(也称为fat包),不但打包慢,体积大,传输也慢,今天教大家给spring boot瘦瘦身. 背景 现在微服务架构越来越流行,一个项目10多个基于 ...

  6. unity3d android包太大了,unity/unity3d编译成android apk包瘦身方法

     unity/unity3d编译成android apk包瘦身方法 本文系原创,请转发的朋友带上我的链接. 相信用unity开发的同学都会遇到类似的经历:明明资源图片不大,但是发现打包后apk文件 ...

  7. 深入探索 Android 包瘦身(上)

    码个蛋(codeegg) 第 942 次推文 作者:jsonchao 链接:https://juejin.im/post/5e7ad1c0e51d450edc0cf053 今天分享一篇匠心制作的< ...

  8. 智能小程序档案馆——如何给“包”瘦身

    上传小程序代码的时候包体积太大不知如何是好?小程序打开速度慢,流量耗费大不知如何优化?在今天的文章里,我们一起来讨论一下如何给"包"瘦身. 为什么要限制包的大小? 我们都知道小程序 ...

  9. ttf字体包瘦身,ttf字体包提取指定字体,缩小ttf文件体积。

    ttf字体包瘦身 注:此方法只试用于只需要少数字体的情况. 需求 做APP时出现了一个需求,应用登录页面和主页面的系统名称需要根据用户所属行政区划进行动态调节. 为了突出系统名和样式的美观,系统名在显 ...

最新文章

  1. Nature指数发榜:中科院总榜夺冠,北大、清华列学术机构Top 10
  2. RHEL系统启动流程
  3. html body div height: 100%;
  4. sql 触发器的常用语句(转)
  5. php图片视频,PHP中使用php5-ffmpeg撷取视频图片实例
  6. php内置的数组函数大全,php数组的内置函数大全
  7. Chrome 扩展 最近的历史 HistoryBar v1.1
  8. python读取csv最后一行_python – 尝试使用seek()获取csv文件的最后一行时的AttributeError...
  9. Mybatis中的动态SQL记录
  10. oracle 统计文本字符串,oracle人员权限,字符串转列,统计管理详解-Oracle
  11. InfoWorld 2020 年公布最佳开源软件
  12. 【SpringCloud Eureka源码】从Eureka Client发起注册请求到Eureka Server处理的整个服务注册过程(下)...
  13. 造福身心障碍者 Skype及PowerPoint新增实时字幕功能
  14. 手机内存文件夹html,手机内存难清理?试试直接删掉这3个文件夹,网友:咋不早说?...
  15. 微型计算机蓝屏的处理方法,电脑出现蓝屏如何解决_电脑蓝屏的处理方法
  16. 混沌的有关概念——1
  17. 开源知识管理系统_逛了4年Github,一口气把我收藏的 Java 开源项目分享给你
  18. java windows 打印机_windows系统 TSC 打印机的JAVA实现
  19. 笔记本二合一计算机,笔记本界的“变形金刚”:盘点三款值得购买的二合一笔记本电脑 - 全文...
  20. [c++] insert和emplace的区别

热门文章

  1. html数组显示,javascript中怎么输出数组?
  2. 区块链技术交流群,欢迎大家进群交流
  3. Linux常用命令——shutdown命令
  4. JDK8中的@sun.misc.Contended在java11中被移除了?
  5. python猴子摘桃问题_桃子
  6. 密码加密与解密( SHA256等)
  7. C语言FILE读写操作
  8. springboot中使用socket对接第三方接口
  9. 51单片机入门之七:按键检测,单片机如何检测按键输入
  10. Python 利用百度智能云进行短语音识别