[SpringBoot]- Querydsl gradle 설정 (Spring boot 3.0 이상)

ACAI BERRY DEVELOVER·2023년 6월 25일
0
post-thumbnail

☕️ Spring data JPA + Querydsl 사용하기


  • 부트3이래로 Querydsl 설정이 바뀌었다고 한다.(애많이먹음)
  • 일단 나의 구글링방법이 너무 허접했고 스부3 querydsl gradle 설정이라고 서치하고 나서야 방법을 찾을 수 있었다.
  • 의존성에 추가한 querydsl-jpa, querydsl-apt:5.0.0: 뒤에 자카르타를 명시하지 않아서였다. (자카르타를 명시하지 않으면 jpa를 인식을 못한다느니, 별별 에러를 뱉어냄) 하드코딩으로 꼭 써주자..!
  • 그리고 jakarta를 명시하지 않으면 javax에서 찾아 Qclass를 컴파일하지 못하는 거 같다.

🥛 개발환경


  • intellij
  • springboot 3.1.1
  • Gradle
  • Lombok

🍵 gradle 설정


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

group = 'com.example'
version = '0.0.1-SNAPSHOT'

java {
	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-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	compileOnly 'org.projectlombok:lombok'
	developmentOnly 'org.springframework.boot:spring-boot-devtools'
	// https://mvnrepository.com/artifact/com.mysql/mysql-connector-j
	implementation 'com.mysql:mysql-connector-j:8.0.33'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
	annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta"
	annotationProcessor "jakarta.annotation:jakarta.annotation-api"
	annotationProcessor "jakarta.persistence:jakarta.persistence-api"

}

tasks.named('test') {
	useJUnitPlatform()
}
  • 아래는 옵션이다. 없어도 Qclass는 제대로 생성이 된다.
// === Querydsl 빌드 옵션 (선택사항) ===
def querydslDir = "$buildDir/generated/querydsl"

querydsl {
	jpa = true
	querydslSourcesDir = querydslDir
}

sourceSets {
	main.java.srcDir querydslDir
}

configurations {
	querydsl.extendsFrom compileClasspath
}

compileQuerydsl {
	options.annotationProcessorPath = configurations.querydsl
}
  • gradle 설정을 끝냈으면 clean - build - compileJava하면 프젝에 build항목이 생기고 좌라락 세부항목이 생기고 거기에 Qclass가 만들어지는 것이다.

  • ✩✩✩ 그리고 되도록이면 gradle 플러그인 방법은 사용하지 않는다.
    찾아보니 gradlew를 통해 빌드를 할 수도 있는데 플러그인은 이때엔 문제가 발생한다고 한다.
    또 다른 블로그에선 매번 gradle설정이 바뀔때마다 바꿔줘야 하는 수고로움이 있다고 한다. 위와 같은 방법을 사용하도록 한다.

reference: http://honeymon.io/tech/2020/07/09/gradle-annotation-processor-with-querydsl.html
https://velog.io/@juhyeon1114/Spring-QueryDsl-gradle-%EC%84%A4%EC%A0%95-Spring-boot-3.0-%EC%9D%B4%EC%83%81

profile
쓸때 대충 쓰지 말고! 공부하면서 써!

0개의 댓글