QueryDSL 5.0.0 JPA分类器注解处理器无法正常工作问题
QueryDSL 5.0.0注解处理器解析失败问题(Gradle 7.5.1环境)
近期遇到QueryDSL注解处理突然失效的情况,未对配置做任何修改,编译时直接报错。环境信息:Gradle 7.5.1,QueryDSL版本5.0.0。
原build.gradle相关配置
implementation "com.querydsl:querydsl-core:${querydslVersion}" implementation "com.querydsl:querydsl-jpa:${querydslVersion}" implementation "com.querydsl:querydsl-apt:${querydslVersion}" ... annotationProcessor ("javax.annotation:javax.annotation-api:1.3.2") annotationProcessor ("org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.2.Final") annotationProcessor ("com.querydsl:querydsl-apt:${querydslVersion}") annotationProcessor ("com.querydsl:querydsl-apt:${querydslVersion}:jpa")
编译报错信息
* What went wrong: Execution failed for task ':compileJava'. > Could not resolve all files for configuration ':annotationProcessor'. > Could not find querydsl-apt-5.0.0-jpa.jar (com.querydsl:querydsl-apt:5.0.0). Searched in the following locations: file:/Users/devuser/.m2/repository/com/querydsl/querydsl-apt/5.0.0/querydsl-apt-5.0.0-jpa.jar
问题原因
QueryDSL 5.0.0版本对注解处理器的分类器(classifier)使用方式做了变更,原有的:jpa后缀写法不再适用,导致Gradle无法定位到对应jar包。
标准解决方案
调整注解处理器配置,使用classifier参数指定JPA类型,保持版本与QueryDSL主版本一致:
implementation "com.querydsl:querydsl-core:${querydslVersion}" implementation "com.querydsl:querydsl-jpa:${querydslVersion}" // 移除不必要的querydsl-apt implementation依赖 annotationProcessor ("javax.annotation:javax.annotation-api:1.3.2") annotationProcessor ("org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.2.Final") annotationProcessor group: 'com.querydsl', name: 'querydsl-apt', classifier: 'jpa', version: "${querydslVersion}"
临时兼容方案(适配JHipster BOM场景)
如果项目由JHipster BOM控制QueryDSL版本默认拉取5.0.0,可临时将注解处理器版本降级到4.4.0来快速解决问题:
implementation group: 'com.querydsl', name:'querydsl-jpa', version:'+' annotationProcessor group: 'com.querydsl', name: 'querydsl-apt', classifier: 'jpa', version: '4.4.0'
内容的提问来源于stack exchange,提问作者Jose Gulisano
相关产品推荐
相关产品推荐

