
Maven 프로젝트에서 Lombok이 인식되지 않는 문제 해결프로젝트/온라인 서점 프로젝트 + 리팩토링2025. 2. 25. 13:54
Table of Contents
1. 문제 상황
과거에 진행했던 Maven 기반의 팀 프로젝트를 다시 리팩토링하기 위해 클론을 받아왔다.
하지만 프로젝트를 컴파일하는 과정에서 Lombok을 인식하지 못하는 문제가 발생했다.
1.1 문제 분석
이 프로젝트는 Maven 기반으로 작성되었으며, 당시 정상적으로 작동하던 프로젝트였다.
하지만 현재 환경에서 빌드하자 Lombok이 정상적으로 적용되지 않는 문제가 발생했다.
이 프로젝트 이후에 나는 Gradle만 사용했는데 Gradle에서는 annotationProcessor
설정을 추가하여 Lombok을 사용한다.
그래서 Maven에서도 유사한 설정이 필요할 것으로 생각했다.
2. 해결 방법
pom.xml
에 maven-compiler-plugin
에 대한 Lombok 설정 추가
Maven의 maven-compiler-plugin
을 사용하여 Lombok을 올바르게 인식하도록 설정해야 한다.
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
...
</plugins>
</build>
3. 원인 분석
3.1 JDK 버전에 따른 차이
- 이전에 프로젝트를 구현할 때는 JDK 11에서 진행했지만, 현재 클론 후 IntelliJ에서 실행하게 되면서 자동으로 JDK 23이 적용되었다.
- JDK 23부터는 애너테이션 프로세싱 방식이 변경되어, 명시적으로 활성화하지 않으면 Lombok이 정상적으로 동작하지 않는다.
이 프로젝트는 JDK 11이라 버전만 바꿔주면 해결됐지만, 원인이 궁금하여 알아보았다.
3.2 Gradle과 Maven 차이
- Gradle 5 이하에서는 annotationProcessor 없이도 Lombok이 자동으로 활성화되었다.
- 하지만 Gradle 6 이상부터는 명시적으로 annotationProcessor를 추가해야 한다.
- 요즘에는 대부분 Gradle 8을 사용하므로, Lombok을 적용하려면 annotationProcessor 설정이 필수적이다.
- Maven도 최신 JDK 환경에서는 애너테이션 프로세싱을 수동으로 설정해야 한다.
4. 결론
Lombok과 같은 애너테이션 기반 코드 생성 라이브러리는 JDK와 Gradle/Maven 버전에 따라 annotationProcessor 활성화 방식이 다르다.
그러므로 명시적으로 annotationProcessor을 활성화 하면 환경에 영향 받지 않고 사용할 수 있다.
참고
'프로젝트 > 온라인 서점 프로젝트 + 리팩토링' 카테고리의 다른 글
주소 도메인 테이블 구조 리팩토링으로 성능·동시성 문제 해결 (0) | 2025.03.28 |
---|---|
Object Storage 업로드 방식과 이미지 조회 방식 변경 (0) | 2025.03.13 |
설정파일 암호화 로직 리팩토링으로 의존성 분리와 API 호출 최적화하기 (0) | 2025.03.07 |
DBCP2에서 HikariCP로 전환 과정 (0) | 2025.03.04 |
Logback 설정 실수로 인해 로그가 출력되지 않은 문제 해결 과정 (0) | 2025.02.27 |
@nuheajiohc :: nuheajiohc
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!