[DEV] 기록

[SpringBoot 2.6.X] QueryDSL Unable to load class 'com.mysema.codegen.model.Type'

꾸준함. 2023. 6. 20. 16:32

개요

SpringBoot 2.7.12 버전에 QueryDSL 디펜더시를 추가한 후 QClass 생성을 위해 compileQuerydsl 명령을 호출하니 아래와 같은 에러가 발생했습니다.

 

QueryDSL Unable to load class 'com.mysema.codegen.model.Type'

 

External Libraries에 추가된 라이브러리 목록은 아래와 같습니다.

 

 

원인

SpringBoot 2.6.X 버전 이상부터는 build.gradle에 QueryDSL 버전을 직접 명시해야 하고, querydsl-jpa 및 querydsl-apt를 추가하도록 변경이 되었습니다.

 

해결 방법

아래 build.gradle 파일과 같이 querydsl 세팅을 변경하면 정상적으로 compileQuerydsl 명령이 실행됩니다.

 

buildscript {
    ext {
        queryDslVersion = "5.0.0"
    }
}

plugins {
    id 'java'
    id 'org.springframework.boot' version '2.7.12'
    id 'io.spring.dependency-management' version '1.1.0'
    //querydsl 추가
    id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
}

group = 'com.tistory.jaimemin'
version = '0.0.1-SNAPSHOT'

java {
    sourceCompatibility = '1.8'
}

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    //querydsl 추가
    implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
    annotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}"
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.h2database:h2'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

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


//querydsl 추가 시작
def querydslDir = "$buildDir/generated/querydsl"
querydsl {
    jpa = true
    querydslSourcesDir = querydslDir
}
sourceSets {
    main.java.srcDir querydslDir
}
configurations {
    querydsl.extendsFrom compileClasspath
}
compileQuerydsl {
    options.annotationProcessorPath = configurations.querydsl
}
//querydsl 추가 끝

 

참고

실전! Querydsl - 김영한 강사님

반응형