QueryDsl 기본 세팅

Date:     Updated:

카테고리:

태그:

QueryDsl

QueryDsl은 기존 dependency를 추가하는 경우와 다르게 설정파일들을 수정해줘야한다.
수정하지않으면 최신 Spring5에서 아래와 같은 에러가 난다.
Unable to load class ‘com.mysema.codegen.model.Type’ compileQuerydsl

  1. plugin 추가
  2. 라이브러리 추가
  3. 각종 dir, config
**************************************************************
buildscript {
    ext {
        queryDslVersion = "5.0.0"
    }
}
***************************************************************


plugins {
    id 'org.springframework.boot' version '2.6.4'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'

  1. plugin 추가
    **************************************************************
    id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'
  **************************************************************

    id 'java'
}

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

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.5.7'
    compileOnly 'org.projectlombok:lombok'


  2.라이브러리 추가
    **************************************************************
    implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
    implementation "com.querydsl:querydsl-apt:${queryDslVersion}"
  **************************************************************

    runtimeOnly 'com.h2database:h2'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

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


 3. 각종 dir, config 
**************************************************************
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
}
**************************************************************

3번에 설정으로 해당 경로에 QueryDsl 전용 Entity를 생성해주기위해 compileQuerydsl을 실행한다.
image

querydsl에 QEntity가 생성된것을 확인할 수 있다.
image

Spring 카테고리 내 다른 글 보러가기

댓글남기기