본문 바로가기
Java & Kotlin/Spring Data

[QueryDSL] gradle querydsl 설정하기

by heekng 2022. 5. 15.
반응형

gradle querydsl 설정하기

springboot 프로젝트에 querydsl을 설정하면서 기존 설정방식이 조금 효율적이지 못하며, 자동화의 필요성을 느껴 개선하였다.

기존 방식

buildscript {
    ext {
        queryDslVersion = "5.0.0"
    }
}

plugins {
    ...
    id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
    ...
}

dependencies {
    ...
    implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
    annotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}"
    ...
}

...

def querydslDir = "$buildDir/generated/querydsl"

querydsl {
    jpa = true
    querydslSourcesDir = querydslDir
}
sourceSets {
    main.java.srcDir querydslDir
}
configurations {
    querydsl.extendsFrom compileClasspath
}
compileQuerydsl {
    options.annotationProcessorPath = configurations.querydsl
}
  • 기존의 설정 방식이다.
  • 이 방식의 가장 큰 단점은 queryDslVersion을 직접 명시해준다는 점이다.

개선 방식

plugins {
    ...
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    ...
}

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

...

def generated='src/main/generated'
sourceSets {
    main.java.srcDirs += [ generated ]
}

tasks.withType(JavaCompile) {
    options.generatedSourceOutputDirectory.set(file(generated))
}

clean.doLast {
    file(generated).deleteDir()
}
  • 개선된 방식이다.
  • gradle version 7.4.1에서 설정하였다.
  • clean시에 generated 디렉토리를 비우도록 설정하고, io.spring.dependency-management에 맞는 querydsl을 사용하도록 수정하였다.
  • 또한 QType이 생성되는 디렉토리를 src/main/generated으로 수정하였다.

gradle을 사용하면서 아직 문법이나 setting에 대한 지식이 부족함을 느꼈다.
학습이 필요하다..!

반응형