티스토리 뷰

 개발 환경

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 문제인건가... 했는데 결국 저 플러그인 때문이었어요. (삽질만세..!)

 

 

 

 

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 31
글 보관함