[서버][스프링] Mapstruct와 Lombok 동시 사용할 때 주의할 점
프로그래밍/서버2021. 3. 21. 20:50
의외의 동작이긴 하지만 pom(maven)을 이용하는 경우 mapstruct와 lombok을 동시에 사용 할 때
annotationProcessorPaths에 명시하는 순서가 중요한 것 같습니다.
mapstruct 를 먼저 적고 그 다음에 lombok을 쓰고..
클래스의 package 위치 등을 변경하고 빌드하면 Unknown Property in a return type 같은 에러가 발생합니다.
몇 번 테스트한 걸로 보면.. lombok이 실행되기 전에 mapstruct 관련된 어노테이션 프로세서가 동작해서 그런 것 같습니다.
설마? 하고 아래처럼 두 순서를 변경하니
에러가 마법처럼 사라지네요.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source> <!-- depending on your project -->
<target>1.8</target> <!-- depending on your project -->
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${org.projectlombok.version}</version>
</path>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${org.mapstruct.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
참고
mapstruct.org/documentation/installation/
stackoverflow.com/questions/47676369/mapstruct-and-lombok-not-working-together
댓글 영역