SlimFast Maven插件:HubSpot避免SpringBoot肥胖巨大JAR的方法

栏目: Java · 发布时间: 5年前

内容简介:在现代Java Web开发中,构建和部署胖JAR大型文件可能存在明显的缺点。HubSpot工程团队创建了一篇该博客解释了团队最初如何使用Maven Shade插件来构建和打包应用程序,但这使得一个应用程序包含70个类文件 - 在原始JAR中总计210 KB,不包含任何依赖项 - 转换为150多MB大小的肥胖Jar。使用Shade将100,000多个文件合并到一个存档中也是一个缓慢的过程,然后当构建服务器将生成的JAR复制并部署到AWS S3存储服务时,这会消耗时间和网络资源。HubSpot团队拥有100名工

在现代Java Web开发中,构建和部署胖JAR大型文件可能存在明显的缺点。HubSpot工程团队创建了一篇 精彩的博客文章 ,解释了他们在将大型胖JAR持续部署到AWS云时,内部开发循环和网络带宽使用带来的一些挑战。

该博客解释了团队最初如何使用Maven Shade插件来构建和打包应用程序,但这使得一个应用程序包含70个类文件 - 在原始JAR中总计210 KB,不包含任何依赖项 - 转换为150多MB大小的肥胖Jar。使用Shade将100,000多个文件合并到一个存档中也是一个缓慢的过程,然后当构建服务器将生成的JAR复制并部署到AWS S3存储服务时,这会消耗时间和网络资源。HubSpot团队拥有100名工程师,每天不断提交并触发1,000-2,000次构建,这种情况得到了放大。他们每天产生50-100 GB的构建工件!

HubSpot团队最终创建了一个新的Maven插件: SlimFast 。这个插件与Shade插件的不同之处在于它将应用程序代码与相关的依赖项分开,因此构建并上传两个单独的工件。单独构建和上载应用程序依赖项可能听起来效率低下,但只有在依赖项发生更改时才会执行此步骤。由于依赖项不经常更改,HubSpot团队声明此步骤通常是无操作; 包依赖关系的JAR文件只上传到S3一次。

HubSpot博客文章和相应的GitHub存储库提供了全面的详细信息,但实际上,SlimFast插件使用Maven JAR插件向Skinny JAR添加一个Class-Path清单条目,指向依赖项的JAR文件,并生成一个JSON文件有关S3中所有依赖项工件的信息,以便以后可以下载这些工件。在部署时,HubSpot团队会下载所有应用程序的依赖项,但随后会在每个应用程序服务器上缓存这些工件,因此这一步骤通常也是无操作。最终结果是在构建时只上传了应用程序的瘦小JAR,这只是几百千字节。在部署时,只需要下载相同的瘦JAR,这需要几分之一秒。

SlimFast插件目前与AWS S3绑定用于存储工件,但代码可在GitHub上获得,其原理可适用于任何类型的外部存储。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

人人都是产品经理

人人都是产品经理

苏杰 / 电子工业出版社 / 2012-6 / 45.00元

本书为《人人都是产品经理》的升级版,是写给“1到3岁的产品经理”的书,适合刚入门的产品经理、产品规划师、需求分析师,以及对做产品感兴趣的学生,用户体验、市场运营、技术部门的朋友们,特别是互联网、软件行业。作为一名“4岁的产品经理”,作者讲述了过去3年的经历与体会,与前辈们的书不同,本书就像你走到作者身边,说“嗨,哥们!晚上有空吃个饭吗,随便聊聊做产品的事吧”,然后作者说“好啊”。 书名叫“......一起来看看 《人人都是产品经理》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

在线进制转换器
在线进制转换器

各进制数互转换器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试