QueryDSL은 최범균님이 번역한 공식 한국어 문서를 제공한다.
4.0.1 버전 공식 레퍼런스
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 빌드 안될 때 처럼 설정해줘야 했습니다.