// 1. queryDsl version 정보 추가
buildscript {
ext {
queryDslVersion = "5.0.0"
}
}
plugins {
id 'org.springframework.boot' version '2.6.3'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
// 2. querydsl plugins 추가
id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
id 'java'
}
//...
dependencies {
// 3. querydsl dependencies 추가
implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
implementation "com.querydsl:querydsl-apt:${queryDslVersion}"
//...
}
test {
useJUnitPlatform()
}
/*
* queryDSL 설정 추가
*/
// querydsl에서 사용할 경로 설정
def querydslDir = "$buildDir/generated/querydsl"
// JPA 사용 여부와 사용할 경로를 설정
querydsl {
jpa = true
querydslSourcesDir = querydslDir
}
// build 시 사용할 sourceSet 추가
sourceSets {
main.java.srcDir querydslDir
}
// querydsl 컴파일시 사용할 옵션 설정
compileQuerydsl{
options.annotationProcessorPath = configurations.querydsl
}
// querydsl 이 compileClassPath 를 상속하도록 설정
configurations {
compileOnly {
extendsFrom annotationProcessor
}
querydsl.extendsFrom compileClasspath
}
다른 분께서도 내용 공유를 해주셨습니다만, 저같은 경우에는 영한님 강의와 똑같은 경로로 Q클래스 생성하면서 진행하고 싶어 방법을 찾아보다가 다음 설정을 찾았습니다.
출처 : https://data-make.tistory.com/728
저같은 경우 문제는 다음과 같았습니다.
compileQuerydsl 로 Q클래스 생성 후, 테스트 코드를 돌리면
java: Attempt to recreate a file for type study.querydsl.entity.QHello
에러 발생generated 폴더를 삭제 후, 테스트 코드를 돌리면 성공.
위 상황에서 테스트 코드를 Run 하기 전에 항상 Q 클래스를 만들려고 시도한다는걸 알게되서 build.gradle 마지막에 기존에 Q 클래스가 있다면 삭제하고 진행하라고 코드를 넣어도 똑같은 현상이 반복됐었습니다.
이 후 검색을 하다가 위의 설정을 알게됐습니다. compileQuerydsl 로 Q 클래스 생성 후, 테스트 코드를 돌려도 잘작동합니다.
만약 영한님하고 같은 화면, 흐름으로 강의를 진행하시고 싶은 분들 있으시면 참고하시면 좋을것 같아요.
다들 화이팅입니다.
안녕하세요. 흰머리오목눈이님
정보 공유 감사합니다 :)
답글