如何在现代Gradle中实现QueryDSL MongoDB与Lombok协同配置
问题:Gradle项目中如何让QueryDSL与Lombok协同工作?(需规避过时插件与IDE构建冲突)
QueryDSL和Lombok在Gradle环境下的协同配置一直是个麻烦事,尤其是QueryDSL的Gradle相关文档少得可怜。我不想用依赖compile配置的过时插件,也不想引入会破坏IntelliJ IDEA构建流程的额外任务插件。折腾了好多种无效方案后,我终于找到可行的配置,特意整理出来分享给大家,也方便自己以后查阅。
可行解决方案
以下是适配最新Gradle版本、不依赖过时插件且兼容IntelliJ IDEA的配置方案:
1. 配置核心依赖
用annotationProcessor替代过时的compile配置,同时引入Lombok和QueryDSL的注解处理器:
Groovy DSL(build.gradle)
dependencies { // 核心依赖 implementation 'com.querydsl:querydsl-jpa:5.0.0' implementation 'org.projectlombok:lombok:1.18.30' // 注解处理器(必须配置,否则Q类无法生成) annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:jpa' annotationProcessor 'org.projectlombok:lombok:1.18.30' // 兼容IDEA的注解处理 annotationProcessor 'javax.annotation:javax.annotation-api:1.3.2' }
Kotlin DSL(build.gradle.kts)
dependencies { implementation("com.querydsl:querydsl-jpa:5.0.0") implementation("org.projectlombok:lombok:1.18.30") annotationProcessor("com.querydsl:querydsl-apt:5.0.0:jpa") annotationProcessor("org.projectlombok:lombok:1.18.30") annotationProcessor("javax.annotation:javax.annotation-api:1.3.2") }
2. 指定Q类生成路径(可选)
将QueryDSL生成的Q类目录加入源码集,让IDEA能自动识别这些生成类:
Groovy DSL
sourceSets { main { java { srcDirs = ['src/main/java', 'build/generated/sources/annotationProcessor/java/main'] } } }
Kotlin DSL
sourceSets { main { java.srcDirs("src/main/java", "build/generated/sources/annotationProcessor/java/main") } }
3. IDEA适配设置
打开IDEA的Settings > Build, Execution, Deployment > Compiler > Annotation Processors,勾选:
Enable annotation processingObtain processors from project classpath
这样配置后,Gradle编译时会先通过Lombok处理实体类注解,再由QueryDSL生成对应的Q类,不会出现冲突,同时完美兼容IDEA的构建流程,全程没有使用任何过时插件或额外任务。
内容的提问来源于stack exchange,提问作者p.streef
相关产品推荐
相关产品推荐

