멀티 모듈 + spring boot 2.x + gradle 9.0
buildscript {
ext {
queryDslVersion = "5.0.0"
}
}
plugins{
id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'
}
dependencies {
// mysql
runtimeOnly 'com.mysql:mysql-connector-j'
// jpa
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
// querydsl
implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
implementation "com.querydsl:querydsl-apt:${queryDslVersion}"
implementation 'org.springframework:spring-web'
}
def querydslDir = "$buildDir/generated/querydsl"
querydsl {
jpa = true
querydslSourcesDir = querydslDir
}
sourceSets {
main.java.srcDir querydslDir
}
compileQuerydsl{
options.annotationProcessorPath = configurations.querydsl
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
querydsl.extendsFrom compileClasspath
}
bootJar {
enabled = false
}
jar {
enabled = true
}
package com.mmd.config;
import com.querydsl.jpa.impl.JPAQueryFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@Configuration
public class QueryDslConfig {
@PersistenceContext
private EntityManager entityManager;
@Bean
public JPAQueryFactory jpaQueryFactory() {
return new JPAQueryFactory(entityManager);
}
}
이 때 엔티티를 기반으로 QClass를 생성하기 위해선, gradle 빌드를 다시 해주어야 한다.
gradle -> Tasks -> other에서 java compile
컴파일 자체를 다시 해주면 문제 없이 QClass가 생성된다.