작성
·
35
0
// buildscript 추가
buildscript {
ext {
queryDslVersion = "5.0.0"
}
}
// buildscript 추가 끝
plugins {
id 'java'
id 'org.springframework.boot' version '3.2.5'
id 'io.spring.dependency-management' version '1.1.5'
id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10' // QueryDSL 플러그인
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
// queryDSL
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
}
tasks.named('test') {
useJUnitPlatform()
}
//querydsl 추가
def querydslDir = "$buildDir/generated/querydsl"
querydsl {
jpa = true
querydslSourcesDir = querydslDir
}
sourceSets {
main.java.srcDir querydslDir
}
compileQuerydsl{
options.annotationProcessorPath = configurations.querydsl
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
querydsl.extendsFrom compileClasspath
}
//querydsl 추가 끝
우선 제 build.gradle 상태이구요 Tasks에서 clean후 compileQuerydsl로 Q타입 생성합니다.
compileJava로 하면 error: Attempt to recreate a file for type com.example.demo.entity.QMember << 이런 오류가뜹니다.
그리고 어플리케이션 실행히시키면 error: Could not find class file for 'com.example.demo.entity.Member'. < 이런오류가 나오네요.. 해결방법 부탁드립니다..
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
정중한 개구리님께서 겪고 계신 문제는 build.gradle
구성에서 QueryDSL 관련 설정이 충돌하거나 누락된 경우일 수 있습니다. 아래 몇 가지 해결 방법을 시도해 보세요.
annotationProcessor
와 compileOnly
의 충돌 문제:
compileOnly
설정에 annotationProcessor
를 추가했습니다만, 이 부분이 불필요할 수 있습니다. 두 설정이 충돌 없이 작동하도록 주의가 필요합니다. annotationProcessor
를 독립적으로 사용해 보세요.compileQuerydsl
설정 확인:
compileQuerydsl
의 annotationProcessorPath
를 올바르게 설정했는지 확인하세요. 주석 처리 및 다른 설정과 중복되지 않도록 확인합니다.sourceSets
설정 추가:
sourceSets
에서 설정한 querydslDir
가 제대로 정의되어 있는지 확인하세요. 필요시 경로를 직접 출력하여 유효한지 확인해 보세요.기존에 생성된 Q 타입 삭제:
build
directory는 지우고 새롭게 compileQuerydsl
로 Q타입을 생성해 보세요.위의 조언을 통해 문제가 해결되지 않는다면, 각 의존성 버전의 호환성을 다시 한번 확인하고 annotationProcessor
및 classpath
관련 설정을 재조정하는 것도 딜레이가 될 수 있습니다.
도움이 되셨기를 바랍니다. 추가적인 질문 있으시면 언제든 말씀해 주세요. 😊
정보 출처: Spring Boot Reference Documentation v3.1.5 Spring Data JPA - Reference Documentation v3.1.5
compileonly 지우고 해봐도 error: Could not find class file for 'com.example.demo.entity.Member'. 이런 에러코드가 나옵니다.. 아마 querydsl 부분때문에 오류가 나는거같은데요
어떻게해야하나요.. 그냥 오류없이 작동하는 bulid.gradle 코드를 가져와주실수없나요..