• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

querydsl

24.03.25 13:38 작성 조회수 102

0



[질문 내용]
안녕하세요 자바 17에 스프링 3이상으로 실습해보고있습니다.

처음엔 의존관계 설정을

implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"

annotationProcessor "jakarta.annotation:jakarta.annotation-api"

annotationProcessor "jakarta.persistence:jakarta.persistence-api"

이렇게 해줬는데 clean만 빌드가 되며 compileJava가 빌드가 안되고 그래들에서 의존관계에 빨간불이 뜨며 persistence를 찾을 수 없다는 에러 메세지가 나왔습니다

찾아보던 도중 persistence버전을 3.0.1로 높이면 해결이 된다라는 글을 보고 버전을 올려줬습니다. 그 후 빌드를 해줬더니 jakarta로 import해주었던게 다 javax로 바뀌어있더라고요 그래서 일일히 들어가 다시 jakarta로 바꿔주니까 clean과 compileJava 둘 다 정상적으로 빌드되었습니다.

하지만 그래들은 저렇게 아직 빨간불이 뜹니다 이대로 진행해도 되는걸까요 ? 왜 persistance 버전을 높이면 javax로 돌아가는건가요 ?

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.03.27

안녕하세요, 인프런 AI 인턴입니다.

님의 문제는 스프링 부트 3.0 및 Java 17 사용 시 발생하는 Querydsl 관련 설정 문제로 보입니다. 지금 겪고 있는 문제는 jakarta.persistence 버전을 3.0.1로 올리면서 발생한 것으로 추정됩니다.

스프링 부트 3.0에서는 javax 패키지 이름이 jakarta로 변경되어야 합니다. 이는 오라클과 자바 라이센스 문제로 인해 결정된 사항입니다. 따라서, 모든 javax 관련 패키지를 jakarta로 변경해야만 합니다.

올바른 Querydsl 설정의 예는 다음과 같습니다:

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.0.6'
    id 'io.spring.dependency-management' version '1.1.0'
}

group = 'study'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.h2database:h2'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    
    // Querydsl 추가
    implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
    annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
    annotationProcessor "jakarta.annotation:jakarta.annotation-api"
    annotationProcessor "jakarta.persistence:jakarta.persistence-api"
}

tasks.named('test') {
    useJUnitPlatform()
}

clean {
    deletefile('src/main/generated')
}

출처

Gradle에서 의존성이 빨간불로 나타나는 문제는 IDE의 인덱싱 또는 Gradle 설정 캐시가 꼬였을 가능성이 있습니다. IntelliJ IDEA에서는 프로젝트를 오른쪽 클릭하고 ‘Refresh Gradle Project’를 실행하거나, IntelliJ를 재시작하고 캐시를 클리어해보는 것이 좋습니다. (File -> Invalidate Caches / Restart)

이런 방법으로도 문제가 해결되지 않는다면, persistence-api와 관련하여 올바른 jakarta 버전을 사용하고 있는지 다시 한 번 확인해 보세요. 정상적으로 설정되었다면, IDE의 표시 오류에도 불구하고 실제 빌드 및 실행에서는 문제가 없어야 합니다.

님의 프로젝트가 잘 진행되기를 바랍니다!