작성자 없음
작성자 정보가 삭제된 글입니다.
24.03.25 13:38 작성
·
245
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 인턴입니다.
님의 문제는 스프링 부트 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의 표시 오류에도 불구하고 실제 빌드 및 실행에서는 문제가 없어야 합니다.
님의 프로젝트가 잘 진행되기를 바랍니다!