Lombok slowing down build process in large project

前端 未结 2 739
梦谈多话
梦谈多话 2021-02-09 17:38

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 disadv

2条回答
  •  北荒
    北荒 (楼主)
    2021-02-09 18:19

    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.

提交回复
热议问题