Lombok在大型项目中减慢了构建过程

如果我在一个项目中使用Lombok(大约15个独立的项目 – EJB,Web,……),Lombok会使构建过程减慢2-3倍。 有没有解决方案,或龙目岛的缺点?

只是为了看项目的大小,它约为400 @Getter ,120 @Setter ,250 @Setter和100 @EqualsAndHashCode

环境:IBM Rational Application Developer 8.0.4及最新版本的Lombok(0.11.6)

有什么想法让它更快?

最后,有一个边缘构建可用,这非常加速了龙目岛! 他们做了很多工作来加快速度,现在它对我来说很好。 构建时间几乎减半,我不必每次都保存文件。

我也删除了我的项目以获得速度的比较,并且删除代码和带有lombok-annotations的代码之间没有太大区别。

您可以在此处下载edge-build: http : //projectlombok.org/download-edge.html

Lombok是一个注释处理器(编译器插件,如果你愿意的话)。 在编译时,每次在代码中找到一组特定的注释时都会调用它,并且有机会生成新的源或抛出编​​译器错误。 如果在编译轮次期间生成了任何新内容,则必须执行另一个新内容,直到所有内容都已成功编译。 所以是的,找到注释需要时间,根据需要处理它们(见下文),并运行额外的编译轮次。

Annotation处理器规范明确禁止修改现有代码 – 您可以生成新类或额外文件(.properties等),但不能更改现有代码。 Lombok通过检测所使用的编译器并破解其内部API以更改内存中的AST以添加访问器等来解决这个问题。 这只是……可怕的。

在我看来,这是一个重大的技术风险。 最后,Lombok没有做任何IDE不能做的事情 – 生成访问器等,但可能会危及整个项目 – 如果你升级你的编译器并且Lombok不支持它,或者引入了一个bug呢? 您最终会得到一个非编译代码(或者在您的情况下,编译非常慢),只是为了隐藏一些没有任何损害的样板方法,除了在代码中占用几行。 但那只是我的个人意见 :)

所以回到你的问题,我不知道如何能够获得更好的编译时间,除非完全删除Lombok。