인프런 커뮤니티 질문&답변

이지창님의 프로필 이미지

작성한 질문수

호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)

querydsl Q class 이슈

작성

·

28

·

수정됨

0

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.0.5'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id "org.asciidoctor.jvm.convert" version "3.3.2"
}

group = 'org.spring'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'

configurations {
    compileOnly {
       extendsFrom annotationProcessor
    }

    asciidoctorExt
}

repositories {
    mavenCentral()
}

ext {
    snippetsDir = file('build/generated-snippets')
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-validation'
    implementation 'org.springframework.security:spring-security-crypto'
    implementation 'org.springframework.session:spring-session-jdbc'

    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.springframework.security:spring-security-test'

    implementation 'org.bouncycastle:bcprov-jdk15on:1.70'

    implementation 'com.querydsl:querydsl-core:5.0.0'
    implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
    annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta"
    annotationProcessor 'jakarta.persistence:jakarta.persistence-api'
    annotationProcessor 'jakarta.annotation:jakarta.annotation-api'

    implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
    runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'
    runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5'

    annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"

    asciidoctorExt "org.springframework.restdocs:spring-restdocs-asciidoctor:3.0.0"
    testImplementation "org.springframework.restdocs:spring-restdocs-mockmvc:3.0.0"

    annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"

    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'

    testCompileOnly "org.projectlombok:lombok"
    testAnnotationProcessor "org.projectlombok:lombok"

    runtimeOnly 'com.h2database:h2'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'

    implementation 'org.modelmapper:modelmapper:3.2.0'
}

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

test {
    outputs.dir snippetsDir
}

asciidoctor {
    inputs.dir snippetsDir
    configurations 'asciidoctorExt'
    dependsOn test
}

asciidoctor.doFirst {
    delete file("src/main/resources/static/docs")
}

bootJar {
    enabled = true

    dependsOn asciidoctor

    copy {
       from asciidoctor.outputDir
       into "src/main/resources/static/docs"
    }
}

jar {
    enabled = false
}



 

FAILURE: Build failed with an exception.

* What went wrong:

Execution failed for task ':compileJava'.

> Compilation failed; see the compiler error output for details.

* Try:

> Run with --info option to get more log output.

> Run with --scan to get full insights.

BUILD FAILED in 6s

 

image.png

 

 

 

 

안녕하세요

querydsl 빌드 후 Q class 임포트 하는 곳에서 에러가 발생합니다 ㅠ

구글링해서 이런 저런 방법 찾아서 혼지사 해보려고 했는데 쉽지않네요..

 

그 밖에 캐시 지우고 재시작, java SDK 설정, 빌드설정 등 여러가지 방법을 해보았는데 잘 안됩니다 ㅠ

두세시간 정도 삽질중인데 도움 좀 주실 수 있을까요..

 

답변 2

0

안녕하세요, 인프런 AI 인턴입니다.

QueryDSL 설정 시 Q 클래스가 제대로 생성되지 않는 문제는 여러 가지 원인에서 발생할 수 있습니다. 주로 Gradle 설정 오류나 QueryDSL에 필요한 플러그인 및 의존성이 잘못 설정될 경우 발생합니다.

문제의 원인을 해결하기 위해 아래 몇 가지를 확인해보시기 바랍니다:

  1. QueryDSL 관련 의존성 추가: annotationProcessor에 QueryDSL 관련 설정이 잘 들어가 있는지 재차 확인해 주세요. 특히, ‘com.querydsl:querydsl-apt’ 이 부분입니다.

    dependencies {
       ...
       annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta"
       ...
    }
    
  2. Generated Sources 디렉토리 추가: Gradle이 생성한 Q 클래스가 source path에 추가되어있는지 확인해 보세요. build/generated 폴더를 프로젝트의 소스 디렉토리로 설정해야 합니다.

    sourceSets {
      main {
         java {
            srcDir 'build/generated/source/apt/main'
         }
      }
    }
    
  3. Gradle 빌드 툴: IntelliJ 혹은 CLI에서 Gradle을 사용하는 경우, clean build 명령을 한번 실행해 보세요. 이 과정에서 Q 클래스 생성기가 제대로 작동할 수 있습니다.

    ./gradlew clean build
    
  4. IDE 설정: IntelliJ에서 “Build, Execution, Deployment” > “Build Tools” > “Gradle” 항목으로 가셔서 “Build and run using” 및 “Run tests using” 옵션이 모두 Gradle로 설정되어 있는지 확인해보세요.

  5. 캐시 및 설정 재확인: 이미 언급하신 대로 캐시를 비우는 과정이 포함됩니다. Gradle 캐시나 IntelliJ의 캐시를 무효화하고 다시 시작하는 방법도 확인해보세요.

이 후에도 해결되지 않는다면, 아래 링크들을 참고하시는 것이 도움이 될 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

0

호돌맨님의 프로필 이미지
호돌맨
지식공유자

안녕하세요.

제가 퇴근중이라 자세히 확인이 불가능한 상황인데요

혹시 제가 올린 강의자료(프로젝트)를 인텔리제이에 불러오셔도 그런지 문저 확인 해주시면 감사하겠습니다.

이지창님의 프로필 이미지
이지창
질문자

넵 저도 퇴근길이라서요 !

집가서 다시 해보겠습니다 퇴근길에 답변 감사합니다

호돌맨님의 프로필 이미지
호돌맨
지식공유자

해결되셨나요?! 해결되셨나요?! 해결되셨나요?! 해결되셨나요?! 해결되셨나요?!