반응형
gradle querydsl 설정하기
springboot 프로젝트에 querydsl을 설정하면서 기존 설정방식이 조금 효율적이지 못하며, 자동화의 필요성을 느껴 개선하였다.
기존 방식
buildscript {
ext {
queryDslVersion = "5.0.0"
}
}
plugins {
...
id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
...
}
dependencies {
...
implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
annotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}"
...
}
...
def querydslDir = "$buildDir/generated/querydsl"
querydsl {
jpa = true
querydslSourcesDir = querydslDir
}
sourceSets {
main.java.srcDir querydslDir
}
configurations {
querydsl.extendsFrom compileClasspath
}
compileQuerydsl {
options.annotationProcessorPath = configurations.querydsl
}
- 기존의 설정 방식이다.
- 이 방식의 가장 큰 단점은
queryDslVersion
을 직접 명시해준다는 점이다.
개선 방식
plugins {
...
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
...
}
dependencies {
...
implementation 'com.querydsl:querydsl-core'
implementation 'com.querydsl:querydsl-jpa'
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa"
annotationProcessor 'jakarta.persistence:jakarta.persistence-api'
annotationProcessor 'jakarta.annotation:jakarta.annotation-api'
...
}
...
def generated='src/main/generated'
sourceSets {
main.java.srcDirs += [ generated ]
}
tasks.withType(JavaCompile) {
options.generatedSourceOutputDirectory.set(file(generated))
}
clean.doLast {
file(generated).deleteDir()
}
- 개선된 방식이다.
gradle version 7.4.1
에서 설정하였다.- clean시에 generated 디렉토리를 비우도록 설정하고,
io.spring.dependency-management
에 맞는 querydsl을 사용하도록 수정하였다. - 또한 QType이 생성되는 디렉토리를
src/main/generated
으로 수정하였다.
gradle을 사용하면서 아직 문법이나 setting에 대한 지식이 부족함을 느꼈다.
학습이 필요하다..!
반응형
'Java & Kotlin > Spring Data' 카테고리의 다른 글
[JPA] illegally attempted to associate proxy with two open Sessions 에러 (0) | 2022.07.01 |
---|---|
[JPA] Cascade persist와 연관관계 (0) | 2022.06.24 |
[QueryDSL] oneToMany 관계에서 여러 개의 fetchJoin 사용하기 (0) | 2022.06.24 |
[QueryDSL] 페이징 연동하기 (0) | 2022.05.15 |
[QueryDSL] Spring Data JPA와 QueryDSL 사용하기 (0) | 2022.05.15 |
[QueryDSL] 벌크연산과 SQL Funtion (0) | 2022.05.15 |