2018.10.23
前言
A ---> B
Spring Boot项目中A模块依赖于B模块,但对A打包完运行后,报错显示不支持Zip64。官方Github对该问题进行了解释1:受限于Spring Boot加载器,无法读取zip64格式文件。同时也给出了疑问:为何单个包会如此地大。
方法
在这个case里,A模块打包生成的jar包足足有300MB。Pom中采用了maven-shade-plugin,最终生成了fat包。为了分析A模块所有依赖的关系,生成了该模块的依赖树2;而后解压了该jar文件,发现其所依赖的B模块就占了100多MB,大于单个依赖的55MB上限3。B模块也是一个fat包,因此一方面A、B模块存在冗余依赖包的情况(还可能依赖冲突),另一方面B模块的确是过于庞大,超过Spring Boot Loader的上限。因此,在B模块的Pom中直接移除了maven-shade-plugin插件,使得该依赖大小符合要求。