강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của yeyoung86560299
yeyoung86560299

câu hỏi đã được viết

Trong thực tế! Truy vấn

Querydsl thiết lập và kiểm tra

3.2버전 gradle 설정에 대한 문제

Đã giải quyết

Viết

·

2.6K

3

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
여기에 질문 내용을 남겨주세요.

이게 현재 프로젝트 이고

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.2.3'
    id 'io.spring.dependency-management' version '1.1.4'
    id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'
}

group = 'study'
version = '0.0.1-SNAPSHOT'

java {
    sourceCompatibility = '17'
}

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    runtimeOnly 'com.mysql:mysql-connector-j'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'

    implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0'

    //test 롬복 사용
    testCompileOnly 'org.projectlombok:lombok'
    testAnnotationProcessor 'org.projectlombok:lombok'

    //Querydsl 추가
    implementation 'com.querydsl:querydsl-jpa:5.1.0:jakarta'
    annotationProcessor "com.querydsl:querydsl-apt:5.1.0:jakarta"
    annotationProcessor "jakarta.annotation:jakarta.annotation-api"
    annotationProcessor "jakarta.persistence:jakarta.persistence-api"

}

tasks.named('test') {
    useJUnitPlatform()
}

clean {
    delete file('src/main/generated')
}

//querydsl 추가 시작
def querydslDir = file('build/generated/querydsl')

querydsl {
    jpa = true
    querydslSourcesDir = querydslDir
}
sourceSets {
    main.java.srcDir querydslDir
}
configurations {
    querydsl.extendsFrom compileClasspath
}
compileQuerydsl {
    options.annotationProcessorPath = configurations.querydsl
}

현재 gradle설정인데 Querydsl 설정과 검증 부분에서 막혔어요

클린해서 q파일 지우고 테스트 코드 런하면 아래 에러가 나타나고

error: Attempt to recreate a file for type study.querydsl.entity.QHello

 

이후에 q파일이 생성 된 후에는

error: Could not find class file for 'study.querydsl.entity.Hello'.

 

에러가 반복되네요..

 

https://www.inflearn.com/questions/1086099

다른분들 설정파일 따라해도 안됩니다..

 

 

javajpa

Câu trả lời 2

5

안녕하세요. 먼산님, 공식 서포터즈 OMG입니다.

QueryDSL이 유독 까다로워 호환되는 설정을 찾기가 쉽지 않은 것 같습니다.

아래 설정을 복사하여 build.gradle로 붙여넣기하여 확인해보시겠어요?

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.2.3'
    id 'io.spring.dependency-management' version '1.1.4'
    
}

group = 'study'
version = '0.0.1-SNAPSHOT'

java {
    sourceCompatibility = '17'
}

configurations {
    compileOnly {
       extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.h2database:h2'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'

    testCompileOnly 'org.projectlombok:lombok'
    testAnnotationProcessor 'org.projectlombok:lombok'

    implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
    annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
    annotationProcessor "jakarta.annotation:jakarta.annotation-api"
    annotationProcessor "jakarta.persistence:jakarta.persistence-api"


}

tasks.named('test') {
    useJUnitPlatform()
}
clean {
    delete file('src/main/generated')
}

실행 순서는

(1) clean

(2) build

image(3)

확인

image

만약 제대로 동작하지 않는다면

설정에서 Enable annotation processing이 체크되어 있는지도 확인해주세요 😀

image

해결이 안될 경우 댓글 남겨주세요 ^^

감사합니다.

yeyoung86560299님의 프로필 이미지
yeyoung86560299
Người đặt câu hỏi

감사합니다!! 잘됩니다!

1

감사합니당!!

Hình ảnh hồ sơ của yeyoung86560299
yeyoung86560299

câu hỏi đã được viết

Đặt câu hỏi