스프링 부트 2.6 이상부터 querydsl gradle 설정

seungho choi·2022년 7월 14일
0
// 스프링 부트 2.6 이상 부터는 querydsl 5.0을 사용한다 
// 아마 스프링 부트 2.6 이상에서 사용하는 하이버네이트 버전 호환성 문제인거 같다.
buildscript {
	ext {
		queryDslVersion = "5.0.0"
	}
}

plugins {
	id 'org.springframework.boot' version '2.7.1'
	id 'io.spring.dependency-management' version '1.0.11.RELEASE'
	id 'org.asciidoctor.convert' version '1.5.8'
	// QueryDSL 모델 파일을 생성하기 위한 플러그인
	id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
	id 'java'
}

group = 'board-kata'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}

repositories {
	mavenCentral()
}

ext {
	set('snippetsDir', file("build/generated-snippets"))
}

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'
	
    // 5.0 이전 버전에는 'com.querydsl:querydsl-jpa' 의존성만 추가하면 됐지만
    // 5.0 이후 버전에는 3개의 프로젝트로 갈라진거 같다.
	// querdysl ${querydDslVersion} 은 맨위에 선언한 5.0 변수를 사용함
	implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
	implementation "com.querydsl:querydsl-apt:${queryDslVersion}"
	implementation "com.querydsl:querydsl-core:${queryDslVersion}"

	compileOnly 'org.projectlombok:lombok'
	runtimeOnly 'com.h2database:h2'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc'
	testImplementation 'org.springframework.security:spring-security-test'
}

tasks.named('test') {
	outputs.dir snippetsDir
	useJUnitPlatform()
}

tasks.named('asciidoctor') {
	inputs.dir snippetsDir
	dependsOn test
}


// querydsl 설정

// querydsl 빌드 경로 변수
def querydslDir = "$buildDir/generated/querydsl"

querydsl {
	jpa = true
	querydslSourcesDir = querydslDir
}

// build 시 사용할 sourceSet 추가
sourceSets {
	main.java.srcDir querydslDir
}

configurations {
	querydsl.extendsFrom compileClasspath
}

// querydsl 컴파일시 사용할 옵션 설정
compileQuerydsl{
	options.annotationProcessorPath = configurations.querydsl
}

8개의 댓글

comment-user-thumbnail
2022년 12월 11일

스프링부트 2.7.6 버전에서 querydsl을 적용시킬때 계속 에러가 발생했었는데 너무 감사합니다ㅜ
혹시 해당 세팅 방법을 어떻게 알게 되셨는지 여쭈어도 될까요?ㅜ

답글 달기