티스토리 뷰
Kotlin & JPA
[Kotlin][Gradle] Spring Boot 2.6.11, gradle 7.5 환경에서 querydsl 설정하기
Jane Kwon 2022. 8. 23. 12:02반응형
새 프로젝트를 생성하면서 기존 데이터베이스를 연결하고
기존과 동일하게 querydsl JPA 의존성을 주입 후 Q클래스를 사용했는데
그래들 빌드할 때 아래와 같이 에러가 떨어진다.
Unresolved reference: QUser
환경은 Java 11, Spring Boot 2.6.11, gradle 7.5에 querydsl 5.0.0 버전을 사용하려고 한다.
기존 옛 버전에서는 build.gradle.kts 파일에 플러그인에는 아래 한 줄을,
kotlin("kapt") version "1.4.10"
의존성 부분에는 아래 두 줄을,
kapt("com.querydsl:querydsl-apt:5.0.0:jpa")
implementation("com.querydsl:querydsl-jpa:5.0.0")
이렇게 추가해주면 되었는데
plugins {
id("org.springframework.boot") version "2.6.11-SNAPSHOT"
id("io.spring.dependency-management") version "1.0.13.RELEASE"
kotlin("jvm") version "1.4.10"
kotlin("kapt") version "1.4.10"
kotlin("plugin.noarg") version "1.4.10"
kotlin("plugin.spring") version "1.4.10"
}
group = "kr.hosting.apis.admin"
version = "0.0.1-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_11
repositories {
mavenCentral()
}
apply(plugin = "kotlin")
apply(plugin = "kotlin-kapt")
apply(plugin = "kotlin-jpa")
apply(plugin = "kotlin-spring")
apply(plugin = "org.springframework.boot")
apply(plugin = "io.spring.dependency-management")
dependencies {
kapt("com.querydsl:querydsl-apt:5.0.0:jpa")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation("com.querydsl:querydsl-jpa:5.0.0")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
implementation("com.microsoft.sqlserver:mssql-jdbc:9.1.0.jre8-preview")
implementation("ch.simas.qlrm:qlrm:1.7.1")
implementation("org.springframework.boot:spring-boot-starter")
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.springframework.boot:spring-boot-starter-aop")
implementation("org.springframework.boot:spring-boot-starter-security")
implementation("org.springframework.boot:spring-boot-starter-actuator")
implementation("org.springframework.boot:spring-boot-starter-logging")
implementation("org.springframework.boot:spring-boot-starter-validation")
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
testImplementation("org.springframework.boot:spring-boot-starter-test")
}
tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
jvmTarget = "11"
}
}
tasks.withType<Test> {
useJUnitPlatform()
}
이 버전에서는 여기에 추가적으로 의존성에는 아래 한 줄을,
kapt("org.springframework.boot:spring-boot-configuration-processor")
파일 끝에는 아래처럼 QClass 생성 경로를 설정해주어야 한다.
sourceSets["main"].withConvention(org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet::class) {
kotlin.srcDir("$buildDir/generated/source/kapt/main")
}
그럼 최종적으로 build.gradle.kts 파일은 아래처럼 되고,
빌드 시에 정상적으로 동작하는 것을 확인할 수 있다.
plugins {
id("org.springframework.boot") version "2.6.11-SNAPSHOT"
id("io.spring.dependency-management") version "1.0.13.RELEASE"
kotlin("jvm") version "1.4.10"
kotlin("kapt") version "1.4.10"
kotlin("plugin.noarg") version "1.4.10"
kotlin("plugin.spring") version "1.4.10"
}
group = "kr.hosting.apis.admin"
version = "0.0.1-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_11
repositories {
mavenCentral()
}
apply(plugin = "kotlin")
apply(plugin = "kotlin-kapt")
apply(plugin = "kotlin-jpa")
apply(plugin = "kotlin-spring")
apply(plugin = "org.springframework.boot")
apply(plugin = "io.spring.dependency-management")
dependencies {
kapt("com.querydsl:querydsl-apt:5.0.0:jpa")
kapt("org.springframework.boot:spring-boot-configuration-processor")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation("com.querydsl:querydsl-jpa:5.0.0")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
implementation("com.microsoft.sqlserver:mssql-jdbc:9.1.0.jre8-preview")
implementation("ch.simas.qlrm:qlrm:1.7.1")
implementation("org.springframework.boot:spring-boot-starter")
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.springframework.boot:spring-boot-starter-aop")
implementation("org.springframework.boot:spring-boot-starter-security")
implementation("org.springframework.boot:spring-boot-starter-actuator")
implementation("org.springframework.boot:spring-boot-starter-logging")
implementation("org.springframework.boot:spring-boot-starter-validation")
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
testImplementation("org.springframework.boot:spring-boot-starter-test")
}
tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
jvmTarget = "11"
}
}
tasks.withType<Test> {
useJUnitPlatform()
}
sourceSets["main"].withConvention(org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet::class) {
kotlin.srcDir("$buildDir/generated/source/kapt/main")
}
(참고 : https://devs0n.tistory.com/35, https://ttl-blog.tistory.com/854)
반응형
'Kotlin & JPA' 카테고리의 다른 글
[Kotlin] CSV 다운로드 (1) | 2023.05.09 |
---|---|
[Kotlin] java.lang.ClassNotFoundException: kotlin.jvm.JvmInline 버전 호환성 문제 해결 (0) | 2022.08.23 |
[Kotlin] Spring Boot - Gradle 환경에서의 Swagger 설정 (0) | 2022.06.17 |
[Kotlin] 퓨니코드(Punycode)를 한글로 변환 (0) | 2022.03.02 |
[Kotlin] The bean 'errorDecoder', defined in class path resource, could not be registered. 에러 해결 (0) | 2022.01.21 |