새로운 프로젝트를 시작하며 spring을 2.6.x에서 3.1.x 로 업그레이드하였다. 그런데 버전이 올라가며 QueryDsl 설정 방법이 변경되었다. 변경 사항에 대해 정리해보고자 글을 작성한다.
plugins {
id 'io.spring.dependency-management' version '1.1.2'
id 'java'
}
repositories {
mavenCentral()
}
dependencies {
// JPA
api 'org.springframework.boot:spring-boot-starter-data-jpa:3.1.2'
api 'org.hibernate.orm:hibernate-core:6.2.6.Final'
// JDBC
api "org.springframework.boot:spring-boot-starter-jdbc:3.1.2"
// MariaDB
implementation 'org.mariadb.jdbc:mariadb-java-client:2.4.1'
// qeurydsl
implementation "com.querydsl:querydsl-jpa:5.0.0:jakarta"
annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta"
annotationProcessor 'jakarta.annotation:jakarta.annotation-api:2.1.1'
annotationProcessor "jakarta.persistence:jakarta.persistence-api:3.1.0"
// lombok
compileOnly 'org.projectlombok:lombok'
//springdoc
api 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'
api 'org.apache.commons:commons-configuration2:2.4'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
}
test {
useJUnitPlatform()
}
jar { enabled = true }
tasks {
processResources {
duplicatesStrategy = org.gradle.api.file.DuplicatesStrategy.INCLUDE
}
}
// QueryDSL 설정법 (3.0 버전)
def generated = "$buildDir/generated"
// querydsl QClass 파일 생성 위치를 지정
tasks.withType(JavaCompile) {
options.getGeneratedSourceOutputDirectory().set(file(generated))
}
// java source set 에 querydsl QClass 위치 추가
sourceSets {
main.java.srcDirs += [ generated ]
}
// gradle clean 시에 QClass 디렉토리 삭제
clean {
delete file(generated)
}
참고 블로그