当前位置: 首页 > 后端技术 > Java

Lightly增量编译技术实践

时间:2023-04-02 09:09:17 Java

背景在产品开发周期中,编写代码、编译、调试占据了工程师大部分的时间。默认情况下,更新一小部分代码需要触发一次。全量编译,这个过程大概需要几分钟,导致每次调试的反馈周期比较长,影响开发效率。为了解决这个问题,Lightly团队进行了很多探索和尝试,引入了增量编译技术,旨在缩短编译时间,提高开发效率。架构设计考虑到Lightly是一个支持所有语言的IDE,我们认为设计增量编译系统需要满足以下条件:通用性:能够接受各种文件类型的源代码变化并进行结构化处理可扩展性:能够适应不同不同语言、不同框架、针对性编译构建为了满足以上条件,我们将增量编译系统设计成以下几个模块:如上图所示,整个系统分为3个部分:监控模块:负责监控对源程序中的文件进行更改、添加、修改、删除、重命名等。消息模块:负责将更改的内容结构化为消息,并根据已知类型进行分类标记,作为下游编译模块消费的依据。同时,消息系统作为一个传输队列,需要具备持久化的特性。编译模块:该模块由各种特定的语言模块组成。通过消息系统的数据作为输入,有针对性地编译构建变化的内容,并输出输出。下面是整体运行的流程图,描述了从代码修改到编译完成的整个过程:以Java项目为例,从整个流程入手,内部流程如下:代码,我们会先将文件进行标记,放入消息队列中,收集文件编译依赖的信息,包括maven依赖的所有路径,以及相关的环境变量和运行时参数。编译修改后的文件并得到输出,即运行并编译class文件Output由于我们已经编译好了需要的文件,所以我们只需要加载产品就可以看到最终的效果:轻体验前面部分详细描述了具体的增量编译的实现,其中包含很多复杂的过程和内容,但是对于用户来说,使用过程是透明的。我们只需要在Lightly上一键触发,1秒内完成整个编译、打包、运行过程,优化了原有的“修改代码、运行构建命令、启动”流程,具体介绍如下(以Java为例))用户编码完成后,点击右上角的RUN按钮即可查看输出:用户再次编码完成后,再次点击右上角的RUN按钮,结果如下:期待未来,Lightly团队将围绕更智能的轻量级IDE不断迭代更多功能,为开发者带来更好的体验,期待更多开发者参与共建。扫描下方二维码,加入Lightly用户交流群,并获取更多信息!