[ERROR][Querydsl][IntelliJ] Attempt to recreate a file for type .. (오류해결)
프로젝트를 하다가 아래와 같은 문구의 Querydsl 파일 중복 생성 관련 오류가 났다.
' attempt to recreate a file for type org.zerock.b01.domain.qbaseentity'
Querydsl는 build.gradle에서 setting할 때 오류가 많이 발생한다고 알고 있어서 (버전 관련해서) 세팅할 때 긴장했는데 세팅은 수월하게
넘어가고 test코드에서 진행할 때 저런 오류가 나타나서 당황했다.
근데 뭐 해결했다 !
처음에 했던 방법은 삭제하고 재설치!
방법1. (실패)
나는 IntelliJ를 사용하는데 오른쪽 Gradle에서 아래와 같이 진행했다.
1 ) build > clean
2 ) other > compileJava
3 ) (해도되고 안해도 되고) build > build
근데 같은 오류가 떴다 ㅎ,ㅎ,ㅎ
그래서 다음 방법으로는 빌드 환결 변경을 했다.
방법2. (성공)
나는 Mac을 사용하므로 상단에 intelliJ > Preference 로 이동해서 진행했다.
gradle을 검색하고, build tools > gradle에서 build and run using, Run tests using을 모두 IntelliJ IDEA로 변경하였다.
빌드 환경을 변경한 후 방법 1에서 했던 clean과 compile을 다시 실행해주니 성공하였다!
spring boot 버전 2여서 빌드 환경을 intelliJ로 하는게 속도면에서도 좋은거로 알고 있기 때문에 버전 2라면 저렇게 하는게 나은것 같다!
(근데 버전 3이상 부터는 gradle에서 빌드 하는게 더 낫다고 어디서 들은 거 같은데..)
* Gradle Build vs. IntelliJ Build
+ 찾아보니 IntelliJ는 증분 빌드(incremental build)를 한다고 한다.
증분 빌드(incremental build)란, 중복된 부분(변경된 부분)만 빌드하는 방식으로 변경되지 않은 것은 건너뛰고 빌드를 진행해서 빠르게 빌드된다고 한다.
Gradle build는 build 폴더로 결과물이 나오고, IntelliJ build는 out 폴더로 결과물이 나온다.
물론 테스트 및 빌드시에 Gradle로 실행할 때와 IntelliJ IDEA로 실행할 때의 성능 차이나 결과에는 큰 영향을 주지 않는다!
그러나 일부 상황에서는 문제가 발생할 수 있다.
간단한 테스트용이나 연습용 프로젝트를 진행하는것이라면 IntelliJ IDEA를 사용, 아니면 Gradle을 사용하는 걸 추천 !