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 클래스가 생성되는 것을 확인할 수 있다.

 

 

반응형