[Spring Boot] kotlin 스프링 QueryDSL 초기 설정 - `build.gradle.kts`

가영·2021년 10월 2일
0

query dsl이란

  • 쿼리를 문자가 아닌 코드로 작성해도 쉽고 간결하며 그 모양도 쿼리와 비슷하게 개발할 수 있는 프로젝트이다.
  • QueryDSL은 JPQL 빌더 역할을 한다.
  • JPA, JDO, JDBC, Lucene, Hibernate Search, 몽고 db 등을 다양하게 지원한다.
  • QueryDSL은 이름 그대로 질의, 즉 데이터를 조회하는 데 기능이 특화돼 있다.

QueryDSL은 최범균님이 번역한 공식 한국어 문서를 제공한다.
4.0.1 버전 공식 레퍼런스

QueryDSL 설정

build.gradle.kts

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    id("org.springframework.boot") version "2.5.4"
    id("io.spring.dependency-management") version "1.0.11.RELEASE"

    val kotlinVersion = "1.5.21"

    kotlin("jvm") version kotlinVersion
    kotlin("plugin.spring") version kotlinVersion
    kotlin("plugin.jpa") version kotlinVersion
    kotlin("plugin.allopen") version kotlinVersion
    kotlin("plugin.noarg") version kotlinVersion
    kotlin("kapt") version "1.3.61" // 추가
}

allOpen {
    annotation("javax.persistence.Entity")
}

noArg {
    annotation("javax.persistence.Entity")
}

group = "com.sungan"
version = "0.0.1-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_11
val qeurydslVersion = "4.4.0" // 이거 함 추가해봤다

repositories {
    mavenCentral()
    maven("https://jitpack.io")
    maven("https://plugins.gradle.org/m2/")
}

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-data-jpa")
    implementation("org.springframework.boot:spring-boot-starter-security")
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")

    implementation("io.github.microutils:kotlin-logging-jvm:2.0.10")

    implementation("com.github.consoleau:kassava:2.1.0")
    runtimeOnly("com.h2database:h2")
    runtimeOnly("mysql:mysql-connector-java")

    implementation("io.jsonwebtoken:jjwt:0.9.1")
    implementation("io.springfox:springfox-boot-starter:3.0.0")

    // QueryDSL
    implementation("com.querydsl:querydsl-jpa:$qeurydslVersion")
    // 밑 부분은 위에 kapt를 플러그인으로 추가하고 빌드하고 나서 추가해줘야했다.
    kapt("com.querydsl:querydsl-apt:$qeurydslVersion:jpa")
    kapt("org.springframework.boot:spring-boot-configuration-processor")

    testImplementation("org.springframework.boot:spring-boot-starter-test")
    testImplementation("org.springframework.security:spring-security-test")
}

sourceSets["main"].withConvention(org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet::class) {
    kotlin.srcDir("$buildDir/generated/source/kapt/main")
} // QueryDSL이 만들어주는 Qclass를 사용하기 위해 저 위치로 접근할 수 있도록 설정해주는 부분이다.


tasks.withType<KotlinCompile> {
    kotlinOptions {
        freeCompilerArgs = listOf("-Xjsr305=strict")
        jvmTarget = "11"
    }
}

tasks.withType<Test> {
    useJUnitPlatform()
}

tasks.getByName<Jar>("jar") {
    enabled = false
}

이렇게하고 빌드하먄

쨘!
Qclass 를 드디어 사용할 수 있다..


저는 참고로 IntelliJ에선 이렇게만하면 빌드가 안돼서
kapt 빌드 안될 때 처럼 설정해줘야 했습니다.

0개의 댓글