티스토리 뷰

반응형

 

새 프로젝트를 생성하면서 기존 데이터베이스를 연결하고

기존과 동일하게 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)

 

 

 

 

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함