Lombok slowing down build process in large project

☆樱花仙子☆ 提交于 2019-12-05 01:39:34

问题


If I use Lombok in a project (about 15 separate projects - EJB, Web,...) Lombok slows down the build Process about 2-3 times. Is there any solution for this, or is that a disadvantage of Lombok?

Just to see the size of the project, it's about 400 @Getter, 120 @Data, 250 @Setter and 100 @EqualsAndHashCode.

Environment: IBM Rational Application Developer 8.0.4 with newest Version of Lombok (0.11.6)

Any ideas to make it faster?


回答1:


Finally, there is an edge-build available, which speeds up Lombok very much! They did a lot of work speeding it up, it works fine for me now. The build time was nearly halved and I do not have to wait every time saving a file.

I also delomboked my project to get a comparison in speed and it is not very much difference between the delomboked code and the code with lombok-annotations.

You can download the edge-build here: http://projectlombok.org/download-edge.html




回答2:


Lombok is an annotation processor (a compiler plugin, if you want). At compile time, it gets called each time a particular set of annotations is found in your code, and is given the opportunity to generate new sources or throw compiler errors. If anything new is generated during a compilation round, another one must take place, until all has been successfully compiled. So yes, it takes time to find the annotations, process them as required (see below), and to run the extra compilation rounds.

The Annotation processor specification explicitely forbids them to modify existing code - you can produce new classes or extra files (.properties, etc), but not change the existing code. Lombok goes around that by detecting the compiler used, and hacking its internal APIs to change the AST in-memory to add accessors and such. This is just... terrible.

And this is, in my opinion, a major technological risk. In the end, Lombok does nothing your IDE can't do - generate accessors, etc., but could endanger your whole project - what if you upgrade your compiler and Lombok does not support it, or introduces a bug ? You end up with a non-compiling code (or in your case, a very slow compilation), only to hide some boilerplate methods that do no harm except take a few lines in your code. But that's just my opinion :)

So to come back to your problem, I don't see how you could get better compilation times, except by removing Lombok alltogether.



来源:https://stackoverflow.com/questions/15518405/lombok-slowing-down-build-process-in-large-project

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!