Prev Next

Java / Lombok Interview questions

Why might Lombok cause issues in multi-module Maven builds with annotation processor ordering?

Annotation processors run in whatever order the build tool discovers and applies them, and if a project uses multiple processors together (Lombok alongside MapStruct, or a custom code-generating processor), the order they run in can matter — particularly since Lombok's generated methods need to already exist by the time another processor that depends on seeing them runs its own analysis.

<annotationProcessorPaths>
    <path>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </path>
    <path>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct-processor</artifactId>
    </path>
</annotationProcessorPaths>

Explicitly declaring annotationProcessorPaths (rather than relying on whatever processors happen to be found on the classpath) lets you control this ordering deliberately, which becomes especially relevant in multi-module builds where different modules might otherwise pick up processors in inconsistent orders depending on classpath assembly quirks, leading to intermittent, hard-to-reproduce build failures where a processor can't find methods Lombok hadn't generated yet.

Why can annotation processor ordering matter when Lombok is combined with another processor like MapStruct?
What Maven configuration lets you control annotation processor ordering explicitly?

Invest now in Acorns!!! 🚀 Join Acorns and get your $5 bonus!
Acorns Logo

Invest now in Acorns!!! 🚀
Join Acorns and get your $5 bonus!

Earn passively and while sleeping

Acorns is a micro-investing app that automatically invests your "spare change" from daily purchases into diversified, expert-built portfolios of ETFs. It is designed for beginners, allowing you to start investing with as little as $5. The service automates saving and investing. Disclosure: I may receive a referral bonus.

Robinhood Logo

Invest now!!! Get Free equity stock (US, UK only)!

Use Robinhood app to invest in stocks. It is safe and secure. Use the Referral link to claim your free stock when you sign up!.

The Robinhood app makes it easy to trade stocks, crypto and more.


Webull Logo

Webull! Receive free stock by signing up using the link: Webull signup.

More Related questions...

What is Lombok? What is the purpose of Lombok in Java? How do you add Lombok to a Maven project? How do you add Lombok to a Gradle project? What is @Getter used for? What is @Setter used for? What is @ToString used for? What is @EqualsAndHashCode used for? What is @NoArgsConstructor used for? What is @AllArgsConstructor used for? What is @RequiredArgsConstructor used for? What is @Data used for? What is @Value used for? What is @Builder used for? What is @Slf4j used for? What is @NonNull used for? What is @Cleanup used for? What is @SneakyThrows used for? What is @Synchronized used for? What is @With used for? Describe how Lombok works under the hood (annotation processing)? How do you install the Lombok plugin in an IDE? What are the types of Lombok annotations? How do you exclude a field from @ToString? How do you exclude a field from @EqualsAndHashCode? What is @Builder.Default used for? Why does IDE support matter for using Lombok effectively? What is the difference between @Data and @Value? What is the difference between @NoArgsConstructor, @AllArgsConstructor, and @RequiredArgsConstructor? When should you use @Builder instead of a constructor? How does @EqualsAndHashCode handle inheritance by default? Why can @Data be risky on JPA entity classes? How do you combine Lombok's @Builder with inheritance? What is the difference between @Getter(lazy = true) and a normal @Getter? Why should you be careful using @EqualsAndHashCode on Hibernate entities with lazy-loaded proxies? What is @Accessors used for and how does it change fluent-style access? How does Lombok handle @ToString with circular references? What is @FieldDefaults used for? What is @Delegate used for? Why is Lombok's approach considered a "compiler hack" and what are the implications? How do you debug generated Lombok code? What issues can Lombok cause with static code analysis tools? What are the risks of using @Data with mutable collections? How does delombok work and when would you use it? Why might Lombok cause issues in multi-module Maven builds with annotation processor ordering? What is @UtilityClass used for? What is the difference between Lombok's @Builder and the traditional Gang-of-Four Builder pattern? How do you use Lombok with Java records - is Lombok still needed?
Show more question and Answers...

Spring

Comments & Discussions