"timestamp": "2023-05-09T05:43:26.718+00:00",
"status": 500,
"error": "Internal Server Error",
"trace": "java.lang.NoClassDefFoundError: Could not initialize class (패키지명).mapper.메퍼명"
"message": "Could not initialize class (패키지명).mapper.메퍼명"
dependencies {
annotationProcessor 'org.projectlombok:lombok:1.18.20'
annotationProcessor 'org.projectlombok:lombok-mapstruct-binding:0.2.0'
annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.2.Final'
implementation 'org.mapstruct:mapstruct:1.4.2.Final'
}
sourceSets {
main.java.srcDirs += "build/generated/sources/annotationProcessor/java/main"
}
sourceSets는 Gradle 빌드 시 생성되는 소스 파일 디렉토리를 지정하는 Gradle DSL
main 소스셋의 디렉토리에 build/generated/sources/annotationProcessor/java/main 디렉토리를 추가한다는 의미
Lombok과 같은 Annotation Processor가 생성한 코드를 소스 코드로 인식하도록 해줍니다
-> Annotation Processor는 소스 코드 분석 및 코드 생성과 같은 작업을 수행
-> Lombok은 이러한 기능을 활용하여 Getter, Setter 및 생성자와 같은 반복적인 코드 작성 작업을 자동화
-> Annotation Processor가 생성한 코드를 컴파일에 포함시켜 Lombok이 정상적으로 동작할 수 있도록 합니다
즉, 이 설정을 추가하면 애노테이션 프로세서가 생성한 소스코드도 컴파일 대상에 포함되어 빌드될 수 있게 됩니다.