728x90
개요
오늘 멀티 모듈로 구성된 Spring Boot 프로젝트에서 QueryDSL을 사용하려다 다음과 같은 오류에 직면했습니다.
/Users/zinu/Dev/project2/SpartaLogistics/com.sparta.logistics.client.hub/build/generated/sources/annotationProcessor/java/main/com/sparta/logistics/client/hub/model/QHub.java:23: error: cannot find symbol
public final com.sparta.logistics.common.model.QTimestamped _super = new com.sparta.logistics.common.model.QTimestamped(this);
^
symbol: class QTimestamped
location: package com.sparta.logistics.common.model
이 오류는 Timestamped 클래스가 있는 common 모듈에서 QueryDSL이 Q-type 클래스를 생성하지 못해 발생했습니다.
원인 분석
- 프로젝트가 멀티 모듈로 구성되어 있음
- Timestamped 클래스가 common 모듈에 위치
- 다른 모듈(예: hub 모듈)에서 Timestamped 클래스를 상속받아 사용
- common 모듈에
QueryDSL 설정이 되어있지 않음
따라서 common 모듈에 QueryDSL 의존성을 추가했습니다. 그런데도 Q클래스가 생성되지 않았습니다. 그 이유는 하위 모듈에서 공통 모듈을 참조하지 않았다는 점이었습니다. 멀티 모듈 프로젝트에서는 모듈 간의 의존성 설정이 매우 중요합니다.
dependencies {
implementation project(':common')
// 기타 의존성...
}
위와 같이 공통 모듈을 참조하는 의존성을 추가합니다.
./gradlew clean build
그리고 전체 프로젝트를 리빌드하면 다음과 같이 Q클래스가 정상적으로 생성된 것을 확인할 수 있습니다.
'TIL,일일 회고' 카테고리의 다른 글
[TIL, 일일 회고] 2024.09.14 - DTO 변환 과정에서 지연 로딩 초기화 발생과 N+1문제 (0) | 2024.09.14 |
---|---|
[TIL, 일일 회고] 2024.09.13 - Git push 오류 해결: 패킷 버퍼 크기 증가로 문제 해결 (0) | 2024.09.13 |
[TIL, 일일 회고] 2024.09.11 - Hibernate @SQLRestriction 어노테이션: 사용법과 장단점 분석 (1) | 2024.09.11 |
[TIL, 일일 회고] 2024.09.10 - PostgreSQL에서 테이블 권한 문제 해결방법 (0) | 2024.09.10 |
[TIL, 일일 회고] 2024.09.09 - IntelliJ에서 파일 탭이 빨간색으로 표시되는 이유와 해결 방법 (0) | 2024.09.09 |