开篇

最近公司开发的微服务项目多了,开发出来的项目各个百十来M,而且是用的云服务器,上传云服务器的时候上传半天。恨得我压根直痒痒!所以只好看看有没有使jar包瘦身的方法。结果一搜还真得挺多!今天就拿一个网上找的开源项目实战一下。以后spring boot 项目打的包在也不会动不动几十上百兆了。关注转发收藏吧。项目中例子源码的项目请移步至文章末尾。




JAVA区块链erp的应用案例 区块链下的erp_JAVA区块链erp的应用案例


实际业务代码只有几十k而已

其实整个开源项目 分为网关、注册中心、配置中心,核心验证服务的总大小也才13M。我们大多数情况下写的代码也都是几十K最多到几兆而已,不会再多了。如下图所示:


JAVA区块链erp的应用案例 区块链下的erp_Java_02


但是我们打出来的包呢?来看我实际打的包邮多大。达到惊人的454M。你说气人不气人。这要是传到服务器,特别是云服务器也是很要命的,在发布频繁的时候。


JAVA区块链erp的应用案例 区块链下的erp_开源项目_03


瘦身原理

我们先拿注册中心为例,大概介绍一下瘦身原理。用压缩工具,打开看此开源项目中的注册中心的jar包解刨如下:此时此jar包为接近50M。其实大部分都在jar包里的lib下。


JAVA区块链erp的应用案例 区块链下的erp_Java_04


JAVA区块链erp的应用案例 区块链下的erp_开源项目_05


JAVA区块链erp的应用案例 区块链下的erp_Java_06


是不是有种豁然开朗的感觉。原来jar包是这样的。那我们能不能把jar包移动出来当成公共的呢?当然可以了。这就是瘦身的方法。把很多项目公用的jar包放在一个文件夹内就好了。

瘦身开始

还是以单个注册中心项目为例。插件进行以下修改。

org.springframework.boot spring-boot-maven-plugin trueZIPorg.apache.maven.plugins maven-dependency-plugin 3.1.1copy-dependenciespackagecopy-dependenciesjarjarruntime${project.build.outputDirectory}/libtrue


JAVA区块链erp的应用案例 区块链下的erp_开源项目_07


然后在打jar包。看看是多大。5k 我就问你是什么概念,就是一个几十M的东西到几k。此时其他依赖的jar包不是没有了,而是拷贝出来了,之后你放在服务器上一个文件夹中,上传一次后,就在也不用上传了。


JAVA区块链erp的应用案例 区块链下的erp_jar包_08


运行时候注意

在linux系统中,指定你依赖jar包位置,用的是Dloader.path指定jar包依赖的位置 注意了。

nohup java -Dloader.path="***/lib" -jar xxxx.jar &

结语

工作有困难,但办法总比困难多。只要想解决办法还是有的。如果有需要此项目源码的请参考另外一篇文章。这里就说什么了。觉得有用就关注一下吧。