매번 무언가의 버전이 변경될 때마다 설정하는데 고생하는 QueryDsl. 스프링부트 3.x을 쓰고서도 한참을 헤매다가 여러 글을 참고하여 내 PC에서 돌아가는 버전을 기록해둔다.
Querydsl 연결을 위한 build.gradle 설정파일
plugins { id 'java' id 'org.springframework.boot' version '3.1.5' id 'io.spring.dependency-management' version '1.1.3' } 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-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.mysql:mysql-connector-j' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' // QueryDsl implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" } /* 없어도 돌아가는 부분 // Querydsl 설정부 def generated = 'src/main/generated' // querydsl QClass 파일 생성 위치를 지정 tasks.withType(JavaCompile) { options.generatedSourceOutputDirectory = file(generated) } // java source set 에 querydsl QClass 위치 추가 sourceSets { main.java.srcDirs += "$projectDir/build/generated" } */ // gradle clean 시에 QClass 디렉토리 삭제 clean { delete file('src/main/generated') } tasks.named('test') { useJUnitPlatform() }
빌드 옵션을 IntelliJ로 설정해놓은 경우
- Build Project, Rebuild, main(), 또는 테스트를 실행하면 src/main/generated 폴더에 Q객체가 생성된다.
- clean {…} 설정을 추가하면 gradle clean시에 해당 폴더가 삭제되도록 할 수 있다.
- Q객체가 git에 올라가지 않게 src/main/generated를 .gitignore에 추가하자.
빌드 옵션을 Gradle로 설정해놓은 경우
- ./gradlew clean compileJava를 실행하면 build/generated 하위에 Q객체게 생성된다.
- 인텔리제이에서는 Gradle-Tasks-build-clean & Gradle-Tasks-other-compileJave를 실행하면 동일한 동작이 수행된다.
- gradle clean 수행 시 build 폴더 자체가 삭제된다.
728x90
댓글