Vik*_* V. 2 gradle querydsl spring-boot spring-data-r2dbc
无法理解如何配置 build.gradle 以在没有任何 jpa/jdo/mongo 的情况下使用 querydsl 注释处理器。我想使用@QueryEntity 注释来生成 Q 类,这样我就可以使用 DSL 支持编写动态 SQL 查询,然后将查询转换为纯文本并将其提供给 Spring R2DBC DatabaseClient 执行程序。
有没有办法使用 gradle querydsl apt 插件和 querydsl 注释处理器在 build.gradle 文件中生成带有 @QueryEntity 注释的 Q 类?
我正在使用 gradle 5、Spring Data R2DBC、Spring Boot,计划将 queryDsl 与注释进程集成。
这是我当前的 build.gradle:
plugins {
id 'java'
id 'org.springframework.boot' version '2.2.1.RELEASE'
id "com.ewerk.gradle.plugins.querydsl" version "1.0.8"
}
apply plugin: 'io.spring.dependency-management'
group = 'com.whatever'
repositories {
mavenCentral()
maven { url "https://repo.spring.io/milestone" }
}
ext {
springR2dbcVersion = '1.0.0.RELEASE'
queryDslVersion = '4.2.2'
}
dependencies {
implementation("com.querydsl:querydsl-sql:${queryDslVersion}")
implementation("com.querydsl:querydsl-apt:${queryDslVersion}")
implementation('org.springframework.boot:spring-boot-starter-webflux')
compileOnly('org.projectlombok:lombok')
annotationProcessor('org.projectlombok:lombok')
annotationProcessor('org.springframework.boot:spring-boot-configuration-processor')
annotationProcessor("com.querydsl:querydsl-apt:${queryDslVersion}")
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
testImplementation('io.projectreactor:reactor-test')
}
test {
useJUnitPlatform()
}
Run Code Online (Sandbox Code Playgroud)
我想把这个答案留在这里,因为我花了几个小时努力寻找适用于Kotlin的解决方案(据我所知,这个问题没有 Java 限制,而且关于此的信息确实很少)。Kotlin 支持使用kapt 插件进行注释处理。为了将此插件用于 QueryDSL,您需要 1. 定义 kapt 插件,并 2. 指定将执行处理的依赖项,在本例中为com.querydsl:querydsl-apt。我使用该general任务来执行插件,但根据文档,还有其他可用选项(可能这对 JPA、JDO、Hiberante 有用,但需要进行一些额外的调整)
plugins {
kotlin("kapt") version "1.4.10"
}
Run Code Online (Sandbox Code Playgroud)
dependencies {
implementation("com.querydsl:querydsl-mongodb:4.4.0")
kapt("com.querydsl:querydsl-apt:4.4.0:general")
}
Run Code Online (Sandbox Code Playgroud)
现在,每当您运行gradle build注释处理时,都会触发使用@QueryEntity. 我希望它能在有人需要 Kotlin 时有所帮助。
一般来说,您不应该使用 QueryDSL 插件。为了配置 QueryDSL 生成,您只需要相关的 querydsl 模块、注释处理器和生成的源目录。例如,使用 lombok 集成,此配置应该可以工作(您可能需要使用您需要的确切 QueryDSL 模块):
buildscript {
ext {
springBootVersion = '${springBootVersion}'
queryDslVersion = '4.2.2'
javaxVersion = '1.3.2'
}
}
plugins {
id 'idea'
}
idea {
module {
sourceDirs += file('generated/')
generatedSourceDirs += file('generated/')
}
}
dependencies {
// QueryDSL
compile "com.querydsl:querydsl-sql:${queryDslVersion}"
annotationProcessor("com.querydsl:querydsl-apt:${queryDslVersion}:general")
// Lombok
compileOnly "org.projectlombok:lombok:${lombokVersion}"
annotationProcessor "org.projectlombok:lombok:${lombokVersion}"
implementation("org.projectlombok:lombok:${lombokVersion}")
// Possibly annotation processors for additional Data annotations
annotationProcessor("javax.annotation:javax.annotation-api:${javaxVersion}")
/* TEST */
// Querydsl
testCompile "com.querydsl:querydsl-sql:${queryDslVersion}"
testAnnotationProcessor("com.querydsl:querydsl-apt:${queryDslVersion}:general")
// Lombok
testImplementation("org.projectlombok:lombok:${lombokVersion}")
testAnnotationProcessor("org.projectlombok:lombok:${lombokVersion}")
testCompileOnly("org.projectlombok:lombok:${lombokVersion}")
}
Run Code Online (Sandbox Code Playgroud)
附加信息:https : //github.com/querydsl/querydsl/issues/2444#issuecomment-489538997
| 归档时间: |
|
| 查看次数: |
5885 次 |
| 最近记录: |