1 minute read

프로젝트 재오픈 시 Q클래스 인식 불가 [빌드에러]

💡 Attempt to recreate a file for type [프로젝트명]


프로젝트를 닫았다가 다음날 다시 열었더니 빌드에러가 떴다. 해당 에러의 경우 query dsl에서 생성 해주는 Q Object(객체) 관련된 문제로 Q object 를 생성해야 하는데 이미 폴더에 객체가 생성되어있어 발생하는 문제라고 한다.

즉, Q object (새로운 파일)을 생성해야 하지만 기존에 있는 파일 때문에 덮어 씌울 수 없어 발생하는 에러이다. 따라서 기존에 생성된 Q object 를 제거하고 다시 실행하면 정상적으로 작동하게 된다.

참고로 Q object의 경우 내가 작성한 Q class 와 Querydsl 을 바탕으로 자동 생성되는 파일이다.

해결 방법


  1. Q 클래스를 제거하고 빌드 후 코드 재 작성이 → 빌드 하는 방법
  2. 터미널에 ./gradlew clean 해당 명령어 입력 을통해서 프로젝트를 정리한다.
  3. [추가] 우측 Gradle 탭 에서 clean 하는 방법

image

/gradlew clean은 Gradle 빌드 도구를 사용하여 프로젝트를 정리하는 명령어이다. Gradle은 자바 기반의 프로젝트 빌드를 자동화하는 도구로, 프로젝트의 의존성 관리와 빌드 프로세스를 간편하게 관리할 수 있도록 도와주는데, 여기서 ./gradlew는 프로젝트 디렉토리에 포함된 Gradle 래퍼(Gradle Wrapper)를 실행하는 명령어이다. Gradle 래퍼는 프로젝트와 독립적으로 Gradle을 설치하지 않아도 프로젝트를 빌드할 수 있도록 해준다. 따라서 ./gradlew` 명령어를 실행하면 프로젝트에 포함된 Gradle 래퍼를 통해 Gradle을 실행하게 된다.

clean은 Gradle 빌드 스크립트(build.gradle)에 정의된 빌드 태스크 중 하나이며, 이 태스크는 프로젝트 빌드 시에 이전에 생성된 모든 빌드 결과물을 제거하여 프로젝트를 깨끗한 상태로 만든다. 일반적으로 빌드 이전에 이전 빌드 결과물을 삭제하고 초기화하는 작업으로 사용된다.

따라서 ./gradlew clean 명령어를 실행하면 프로젝트를 정리하여 이전에 생성된 빌드 결과물을 삭제하고, 프로젝트를 깨끗한 상태로 초기화한다.

해당 에러를 해결하면서 느낀점은 에러를 방지하기 위해선 스탭 1부터 꼼꼼하게 확인하고 진행해야된다 것을 또 한번 느낄 수 있었다. 해당 에러는 금방 해결했지만, 별거 아닌 에러도 이렇게 글로 작성해서 기록해두면 추 후 개발시에 해당 오류를 사전에 방지하지 않을까 싶어 해당 글을 작성해본다.

Leave a comment