SPRING
[SPRING] 코틀린 Kotlin QueryDSL 적용하기
혀내
2022. 4. 15. 15:42
반응형
서론
자바는 되는데.....! 코틀린에서만 QueryDsl 추가가 안된다 ㅠ ㅠ 구글링해서 찾은 블로그 자료들을 다 따라해봐도 Q클래스가 생성이 안된다.. 결국 깃헙을 뒤지면서 어떻게 해결했는지 그 과정에 대해 간단히 적어보겠다.
(2022/04/15, Spring 2.6.6, QueryDsl 5.0.0 기준)
본론
- build.gradle.kts
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
id("org.springframework.boot") version "2.6.6"
id("io.spring.dependency-management") version "1.0.11.RELEASE"
kotlin("jvm") version "1.6.10"
kotlin("plugin.spring") version "1.6.10"
kotlin("plugin.jpa") version "1.6.10"
kotlin("kapt") version "1.6.10"
}
group = "gdscsookmyung"
version = "0.0.1-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_1_8
sourceSets["main"].withConvention(org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet::class) {
kotlin.srcDir("$buildDir/generated/source/kapt/main")
}
configurations {
compileOnly {
extendsFrom(configurations.annotationProcessor.get())
}
}
repositories {
mavenCentral()
}
dependencies {
implementation("com.querydsl:querydsl-jpa:5.0.0")
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
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")
kapt("com.querydsl:querydsl-apt:5.0.0:jpa")
compileOnly("org.projectlombok:lombok")
runtimeOnly("mysql:mysql-connector-java")
annotationProcessor("org.projectlombok:lombok")
annotationProcessor("org.springframework.boot:spring-boot-configuration-processor")
testImplementation("org.springframework.boot:spring-boot-starter-test")
}
tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
jvmTarget = "1.8"
}
}
tasks.withType<Test> {
useJUnitPlatform()
}
위에서 내가 추가한 코드는 총 5줄이다.
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
..
kotlin("kapt") version "1.6.10"
}
..
sourceSets["main"].withConvention(org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet::class) {
kotlin.srcDir("$buildDir/generated/source/kapt/main")
}
..
dependencies {
implementation("com.querydsl:querydsl-jpa:5.0.0")
kapt("com.querydsl:querydsl-apt:5.0.0:jpa")
}
..
kapt 플러그인으로 querydsl을 다운로드받고, build/generated/source/kapt/main 패키지에 Q클래스를 저장하도록 설정했다. gradle sync > build clean > build 순으로 실행하면 아래 위치에 Q 클래스가 생성되는 것을 확인할 수 있다.
반응형