기존에 JPA를 사용하여 만들었던 maven 프로젝트를 gradle로 바꾸기로 했습니다.
lombok, querydsl 관련 에러가 나서 같이 다뤄보려고 합니다 !!!
Gradle 공식홈페이지에서 원하는 버전을 다운받습니다.
저는 binary-only 로 다운받았습니다.
JDK와 동일하게 Gradle도 환경변수 설정을 해야합니다.
[시스템 속성] -> [환경 변수]
위와 같이 나온다면 정상적으로 Gradle이 설정완료가 된 겁니다.
gradle init --type pom 을 치면
Select build script DSL:
1: Groovy
2: Kotlin
Enter selection (default: Groovy) [1..2]
빌드에 사용할 DSL을 선택하라는 질문이 나옵니다.
기본으로 groovy로 선택되어서 groovy로 진행했습니다. (Enter 누르기)
Generate build using new APIs and behavior (some features may change in the next minor release)? (default: no)
새로운 API 를 사용해서 build 를 생성하겠냐는 질문에 기본 값(no)을 선택해 줍니다.
인텔리제이에서 프로젝트를 열었을 때 gradle 파일이 들어갔습니다. (저는 pom.xml을 지웠습니다.)
하지만 gradle 파일이 들어갔다고 해서 바로 실행되지 않았습니다.
plugins
/*
* This file was generated by the Gradle 'init' task.
*/
plugins {
id 'java'
id 'maven-publish'
// querydsl plugins 추가
id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
}
dependencies
dependencies {
implementation 'com.querydsl:querydsl-jpa:5.0.0'
implementation 'com.querydsl:querydsl-apt:5.0.0'
}
추가 설정
test {
useJUnitPlatform()
}
/*
* queryDSL 설정 추가
*/
// querydsl에서 사용할 경로 설정
def querydslDir = "$buildDir/generated/querydsl"
// JPA 사용 여부와 사용할 경로를 설정
querydsl {
jpa = true
querydslSourcesDir = querydslDir
}
// build 시 사용할 sourceSet 추가
sourceSets {
main.java.srcDir querydslDir
}
// querydsl 컴파일시 사용할 옵션 설정
compileQuerydsl{
options.annotationProcessorPath = configurations.querydsl
}
// querydsl 이 compileClassPath 를 상속하도록 설정
configurations {
compileOnly {
extendsFrom annotationProcessor
}
querydsl.extendsFrom compileClasspath
}
다 설정한 후 마지막으로 Gradle을 ReImport 해줍니다.
ReImport 해준 후 compileQuerydsl을 더블클릭해주면 Qdomain이 생깁니다.
저는 기존에 lombok dependency가 있었음에도 불구하고 lombok이 인식이 안되어 에러가 났습니다.
dependencies {
annotationProcessor 'org.projectlombok:lombok:1.18.22'
}
dependencies에 annotationProcessor을 넣으니 해결되었습니다.
번외로, repository에서 @Query의 jpql에 쓰이는 변수들을 @Param으로 바인딩 해줬습니다.
Reference
https://www.inflearn.com/questions/367372
https://data-make.tistory.com/728
https://shanepark.tistory.com/360