수많은 오류와 버그를 뒤로하고 결국 성공했습니다. 저는 지금 환희와 분노에 차 야심한 새벽 1시에 블로그 글을 쓰고 있습니다. 생각해보니 별거 아닌 실수 때문에 발생한 일이라서 쓰기 부끄럽지만, 혹시나 제 경험이 다른 분들께 도움이 될 수 있을까 하는 희망에 이 글을 씁니다.

당신이 만약 코딩 고수시라면 저를 비웃으셔도 됩니다.

하지만 당신이 만약 막 스프링부트 + 롬복 (lombok) 프로젝트에 mapstruct을 도입하고자 하는데, 계속 원인 모를 오류가 나서문제를 해결하지 못하셨다면, 이 글이 아주 약간이나마 도움이 될 수도 있습니다.

결론부터 말씀드리자면,

  1. 그래들 클린 빌드 하세요.

  2. 롬복을 사용하신다면 build.gradle 을 다시 확인하셔서, lombok-mapstruct-binding이 implementation으로 되어있다면 annotationProcessor로 바꾸세요.

  3. (옵셔널) 인텔리제이 플러그인 설치하세요.

입니다...

당신이 만났을 수도 있는 오류들

Mapper 파일을 아무리 수정해도 MapperImpl이 바뀌지가 않아요!

./gradlew clean build를 하시면 해결됩니다.

공식 깃허브에도 ./mvnw clean install을 하라고 명시되어 있는데 저는 인텔리제이가 다 알아서 해줄 거라고 착각을 했습니다...

No property named "xxx" exists in source parameter(s). 에러가 계속 떠요!

error: No property named "room.id" exists in source parameter(s). Type "Coupon" has no properties.

lombok-mapstruct-binding이 implementation으로 되어있다면 annotationProcessor로 바꾸세요.

https://mapstruct.org/faq/#Can-I-use-MapStruct-together-with-Project-Lombok

저는 위 글을 읽었고, 비교적 최신 롬복과 맵스트럭은 서로 호환이 당연히 잘 되어있을 것이라고, 모든 버그가 다 잡혀있을 것이라고 착각했습니다.

저는 저기 있는 링크를 눌렀고,

https://central.sonatype.com/artifact/org.projectlombok/lombok-mapstruct-binding?smo=true

링크는 여기로 연결이 되었고,

저는 저기 적혀있는 그대로 따라했습니다. 그러면 안 되었는데...

결국 시도를 하다가,

https://github.com/mapstruct/mapstruct-examples/blob/main/mapstruct-lombok/pom.xml

맵스트럭 공식 예시 레포에서 충격적인 코드를 보고 맙니다.

annotatationProcessorPaths

저의 그래들 지식이 부족하여 발생한 비극이었습니다. 기반 지식을 더 많이 쌓고 공부를 게을리하지 말아야 하겠습니다.

당신이 저지를 수도 있는 실수들

빌드 툴 Gradle 안 쓰고 IntelliJ 쓰기

인텔리제이 플러그인 설치 안 하기

마지막 줄에 짤막하게 인텔리제이를 위한 플러그인에 대한 언급이 있는데, 저는 이를 못 보고 지나갔어요...

회고

저는 프로젝트 도중에 위와 같은 버그를 발견해, 시간에 쫓기다 그만 맵스트럭 도입을 포기했는데, 프로젝트 끝나고 맵스트럭 도입을 포기한게 아쉬워서 계속 시도하가 결국 해결하게 되었습니다.

저희와 같은 실수로 시간을 낭비하거나 도입을 포기하시는 분들이 덜 생기기를 바라면서 이 글을 마칩니다.

8개의 댓글

comment-user-thumbnail
2024년 2월 19일

멋진 글이네요!! 플러그인으로 인해 문제가 생기면 정말 난감하더라구요😂
이 글이 많은 사람들에게 유용하기를!

1개의 답글
comment-user-thumbnail
2024년 2월 19일

빌드 툴을 Gradle 말고 인텔리제이를 사용하는 것이 조금 더 빠르다고 강의에서 보았는데 이러한 오류가 생길 수도 있군요??

1개의 답글
comment-user-thumbnail
2024년 8월 11일

진짜 정말 감사합니다.. chat gpt 말고 이 글을 먼저 봤으면 시간을 훨씬 단축할 수 있었겠지만.. 정말 감사합니다 ㅠㅠ

1개의 답글
comment-user-thumbnail
2024년 10월 7일

수백만 시간의 삽질 속에 이 단비를 찾았습니다,,,
이 우물만을 찾아헤맸습니다,,
MapStruct 는 은총알이 아니지만,,
이 총알의 달콤함에 속아 여기까지 왔네요,,,
아무쪼록 너무 감사합니다,, !!!

1개의 답글

관련 채용 정보