望城建设局网站,公司品牌logo设计,搜索引擎 网站推广 举例,免费推广的方式自动分析瘦身Spring Boot 项目最终构建处理 JAR 包大小一直是个诟病#xff0c;需要把所有依赖包内置最终输出可运行的 jar。当然可以使用其他的插件扩展 实现依赖 JAR 和 可运行 jar 分离可以参考 slot-maven-plugin[1], 但此种方法治标不治本并不能减少原有依赖的 JAR 的大小…自动分析瘦身Spring Boot 项目最终构建处理 JAR 包大小一直是个诟病需要把所有依赖包内置最终输出可运行的 jar。当然可以使用其他的插件扩展 实现依赖 JAR 和 可运行 jar 分离可以参考 slot-maven-plugin[1], 但此种方法治标不治本并不能减少原有依赖的 JAR 的大小。Spring Boot 2.4 提供对构建输出 JAR 分析自动瘦身的功能自动在构建输出可运行 JAR 时删除 empty starter dependencies效果展示先来分别基于 Spring Boot 2.4.0 和 Spring Boot 2.3.6 来构建一个可运行的 jar 再来聊什么是 empty starter使用 http://start.spring.io[2] 创建一个空的 Spring Boot 项目注意不需要引入任何依赖mvn clean install 构建出来相关可运行 jar分别解压两个 jar 到两个不同的目录tar -zxvf demo-2.3.6.jar -C demo-2.3.6/tar -zxvf demo-2.4.0.jar -C demo-2.4.0/统计依赖 jar 个数, 2.3.6 共计 19 个 依赖 jar 而 2.4.0 只有 18 个依赖 jar ,缺少了 spring-boot-starter.jarcd demo-2.3.6/BOOT-INF/lib ll -h | wc -l
19cd demo-2.4.0/BOOT-INF/lib ll -h | wc -l
18什么是 empty starter如上文所述我们在基于 http://start.spring.io 创建项目的时候 已经默认引入了, 但在 Spring Boot 2.4 中会自动删除此类 empty starter dependencies jar dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependency我们来看一下 spring-boot-stater 有什么特殊性① 空 jar 不包含任何代码② 有引用其他 jar,只为批量导入其他 jar所以此类型 jar 在构建成可运行 jar 时并未实际意义因为批量导入的依赖 jar 都可以被引入。目前 spring boot 提供的 redis、amqp等大部分 starter 均是此类 jar,所以在构建后会自动删除。自定义 jar 实现自动瘦身创建 MANIFEST.MF jar 包元信息添加一行 Spring-Boot-Jar-Type: dependencies-starter 即可resources├── META-INF└── MANIFEST.MF参考资料[1]slot-maven-plugin: https://github.com/core-lib/slot-maven-plugin[2]start.spring.io: https://start.spring.io来源公众号喜欢的记得点关注哦谢谢