Skip to content

QueryDSL 의존성 추가하기

giantim edited this page Jul 8, 2020 · 1 revision

개발환경

  • Intellij
  • Spring Boot 2.3.1
  • Gradle 6.4.1

의존성 추가하기

Spring Boot의 각 버전에 맞는 QueryDSL 버전 확인

QueryDSL 최신 버전 plugin 확인

싱글 모듈 프로젝트

build.gradle 에 의존성을 설정한다.

  1. plugin에 id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'를 추가한다.

image

  1. dependencies에 querydsl 의존성을 추가한다.

image

  1. QClass가 생성될 경로를 지정한다.
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-core 모듈에서만 QueryDSL을 사용한다. querydsl-admin 모듈에서는 querydsl-core에서 구현한 도메인을 가져다 사용한다.

의존성은 각 모듈의 build.gradle 에 추가한다.

  1. 최상위 모듈

image

  • repositories에 maven { url "https://plugins.gradle.org/m2/" } 를 추가한다.
  • dependencies 에 classpath "gradle.plugin.com.ewerk.gradle.plugins:querydsl-plugin:1.0.10" 를 추가한다.
  • 하위 모듈 중 querydsl-core 만 QueryDSL을 사용하므로 subprojects 에는 다른 내용을 추가하지 않는다.
  1. querydsl-admin
  • QueryDSL을 직접 사용하지 않는 모듈이므로 QueryDSL 관련 의존성을 추가하지 않는다.
  1. querydsl-core

image

  • plugin 과 의존성을 추가해준다.
  • QClass가 생성될 경로는 싱글 모듈 프로젝트와 동일하게 지정해준다.

최종 build.gradle

bootJar { enabled = false }
jar { enabled = true }

apply plugin: 'com.ewerk.gradle.plugins.querydsl'

dependencies {
    implementation 'com.querydsl:querydsl-jpa'

    runtimeOnly 'com.h2database:h2'
}

def querydslDir = "$buildDir/generated/querydsl"

querydsl {
    jpa = true
    querydslSourcesDir = querydslDir
}

sourceSets {
    main.java.srcDir querydslDir
}

configurations {
    querydsl.extendsFrom compileClasspath
}

compileQuerydsl {
    options.annotationProcessorPath = configurations.querydsl
}

설정을 마치고 IntelliJ 의 gradle 탭에서 reload를 실행하면 다음과 같이 바뀐다.

image

  • 최상위 모듈과 querydsl-core 모듈은 QueryDSL 의존성을 가지므로 gradle 메뉴에 Tasks-querydsl 기능이 생겼다.
  • querydsl-admin 모듈은 QueryDSL 의존성이 없으므로 해당 메뉴가 생기지 않았다.

사용법

QueryDSL 의존성을 갖는 모듈에 엔티티 클래스를 추가한 후 gradle 탭에서 Tasks-other-compileQuerydsl 을 실행하면 지정한 경로에 엔티티의 QClass가 생성된다.

image

image

만약 QueryDSL 의존성을 갖는 모듈에서 엔티티 클래스를 수정했다면 gradle 탭에서 Tasks-querydsl-cleanQuerydslSourcesDir 을 실행한 후 Tasks-other-compileQuerydsl 을 실행해서 QClass를 새로 만들어주어야 한다.

Clone this wiki locally