构建.gradle
plugins {
...
id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'
}
apply plugin: 'org.liquibase.gradle'
apply plugin: 'com.ewerk.gradle.plugins.querydsl'
def queryDslSourceDirectory = 'src/querydsl/java/generated'
...
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
...
implementation 'com.querydsl:querydsl-core:5.1.0'
implementation 'com.querydsl:querydsl-jpa:5.1.0:jakarta'
implementation 'com.querydsl:querydsl-apt:5.1.0:jakarta'
annotationProcessor 'com.querydsl:querydsl-apt:5.1.0:jakarta'
...
}
...
querydsl {
jpa = true
querydslSourcesDir = queryDslSourceDirectory
}
sourceSets {
main {
java {
srcDir queryDslSourceDirectory
}
}
}
compileQuerydsl {
options.annotationProcessorPath = configurations.querydsl
}
configurations {
querydsl.extendsFrom compileClasspath
}
基本详细信息.java
...
import jakarta.persistence.*;
...
@Entity
public class BasicDetails {...}
错误日志: 失败:构建失败并出现异常。
java.lang.NoClassDefFoundError:javax/persistence/Entity
Querydsl 不应该查找 javax.persistence.Entity 因为我已经配置了 querydsl 的 jakarta 分类器而不是常规分类器。 我还将 querydsl 的版本降低到 5.0.0 和 4.4.0,但它抛出了相同的错误。
花了几个小时尝试让它工作(我发现的大多数示例要么使用 Maven,要么使用现在不支持的 querydsl gradle 插件),我发现这个问题,结果证明这是关键。
为了简洁起见,以下是我的
build.gradle.kts
的部分内容,它们使我能够正常生成 querysdl 代码。
val jakartaPersistenceApiVersion = "3.1.0"
val queryDslVersion = "5.1.0"
dependencies {
// QueryDSL
implementation("com.querydsl:querydsl-core:${queryDslVersion}")
implementation("com.querydsl:querydsl-jpa:${queryDslVersion}:jakarta")
annotationProcessor("com.querydsl:querydsl-apt:${queryDslVersion}:jakarta")
annotationProcessor("jakarta.persistence:jakarta.persistence-api:${jakartaPersistenceApiVersion}")
}