티스토리 뷰
개발 환경
IDE : IntelliJ
Framework : Spring Boot 3.0.5
JDK -version : openjdk 17
Gradle : Groovy
검색하면 많이 나오는 설정들이 대부분 plugin에 querydsl 설정을 추가하는데
Spring Boot 3 버전 이상부터는 plugin에 querydsl 을 사용하면 제대로 작동되지 않습니다.
반드시 plugins에서 제거해주고 dependencies 에만 라이브러리 추가해주세요.
build.gradle
plugins {
id 'java'
id 'org.springframework.boot' version '3.0.5'
id 'io.spring.dependency-management' version '1.1.0'
//plugins 에서 querydsl 사용하면 안됨!
//id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'
}
group = 'com.clone'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
repositories {
mavenCentral()
}
ext {
queryDslVersion = "5.0.0"
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
implementation 'com.h2database:h2'
// security
implementation 'javax.servlet:javax.servlet-api:4.0.1'
implementation 'jakarta.servlet:jakarta.servlet-api:5.0.0'
// Add Bean Validation API
implementation 'javax.validation:validation-api:2.0.1.Final'
// jwt
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5'
//querydsl
implementation "com.querydsl:querydsl-jpa:${queryDslVersion}:jakarta"
annotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}:jakarta"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
compileOnly 'javax.servlet:javax.servlet-api:4.0.1'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
}
// querydsl 설정
def querydslDir = "$buildDir/generated/querydsl"
sourceSets {
main.java.srcDirs += [ querydslDir ]
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
querydsl.extendsFrom compileClasspath
}
clean.doLast {
file(querydslDir).deleteDir()
}
tasks.named('test') {
useJUnitPlatform()
}
build/generated/querydsl 아래에 Q파일이 생성된 것을 확인할 수 있습니다.
plugin에 querydsl 이 있어도 Gradle 빌드에는 문제가 없습니다.
그런데
gradle >other >compileQuerydsl 실행하면
Unable to load class 'com.mysema.codegen.model.Type'. 에러가 발생하면서
querydsl 폴더만 생성되고, querydsl Q파일이 생성은 안되었습니다.
프로젝트 빌드도 안되고,
버전도 바꿔보고.. jakarta 문제인건가... 했는데 결국 저 플러그인 때문이었어요. (삽질만세..!)
반응형
'backend > jpa' 카테고리의 다른 글
JPA Batch Size : N+1문제 해결법 (0) | 2023.02.27 |
---|---|
N + 1 문제 해결하기 : Fecth Join 사용하면서 발생하는 MultipleBagFetchException 해결 (0) | 2022.12.18 |
N+1 문제 해결하기 : Join, Fetch Join (0) | 2022.12.15 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- array
- addFilterBefore
- ChatGPT
- 스프링 스케줄링
- 스프링오류
- 오블완
- QueryDSL
- port
- MultipleBagFetchException
- 티스토리챌린지
- redisson 분산락
- spring boot 3
- JPA
- Cannot construct instance of
- Kotlin
- Java
- dto 클래스 생성자
- 자바 어플리케이션 실행 과정
- FetchJoin
- 추상클래스
- 배열
- checkout
- Spring Security
- Git
- bucket4j
- n+1
- jvm warm-up 전략
- junit5
- Linux
- MongoDB
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함