JPA QueryDSL이나 객체 매핑 라이브러리인 mapstruct 활용을 하면 src/main/generated 폴더내에 class 파일이 생성된다.
코드를 수정하면 이 폴더내에 class 파일도 다시 초기화되어야 한다.
build.gradle 파일에 초기화후 재생성하는 cycle을 추가한다.
def generated='src/main/generated'
sourceSets {
main.java.srcDirs += [ generated ]
}
tasks.withType(JavaCompile) { // compile시
options.annotationProcessorGeneratedSourcesDirectory = file(generated)
}
clean.doLast { // clean시 폴더 삭제
file(generated).deleteDir()
}
설정을 완료하고 서버 실행을 시도했지만, 수정된 class파일로 적용되지 못하고 에러를 발생시켰다.
이전에 JPA 토이프로젝트 진행할때도 같은 문제가 발생해서 삽질했던 추억이 떠올랐다.
생각을 거슬러 올라가서 터미널로 서버를 실행하니 문제없이 잘 동작되었다. 뭐지??
약간 뇌피셜이지만 인텔리제이 설정에 위와 같이 설정되있는게 문제였던 것 같다. 서버 실행을 할때 gradle로 설정했을 때보다 더 빨리 실행된다고 알고있어서 저렇게 설정했었는데.. 저거 때문에 build.gradle내 cycle이 실행되지 않아 제대로 초기화 작업이 안된것같다. 그래서 터미널에서는 gradle 명령어로 실행하니 제대로 잘 동작했던거군!
gradle로 설정하고 다시 실행해보니 아주 잘되는걸 확인되었다.. 삽질과정에서 꽤나 고통받았지만 이전부터 아주 골치아픈 문제였는데 해결되서 참 다행
'삽질 정리' 카테고리의 다른 글
Mapstruct 활용시 Collection 매핑 방법 (0) | 2022.02.06 |
---|---|
@MapperScan이란? (0) | 2020.10.15 |
MySQL Server 설치할 때 Failed 뜰 경우 (0) | 2020.04.27 |
스프링 프로젝트를 AWS로 배포할 때 중요 체크 사항 (0) | 2020.03.07 |
프로젝트 실행시 import한 라이브러리가 엉키는 경우 (0) | 2019.01.16 |