QueryDSL注释处理器和gradle插件

问题描述 投票:0回答:1

无法理解如何配置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()
}
spring-boot gradle querydsl spring-data-r2dbc
1个回答
0
投票

通常来说,您不应该使用QueryDSL插件。为了配置QueryDSL生成,您只需要相关的querydsl模块,注释处理器和生成的源目录。例如,通过lombok集成,此配置应该可以工作(您可能需要使用所需的确切QueryDSL模块):

buildscript {
    ext {
        springBootVersion = '${springBootVersion}'
        queryDslVersion = '4.2.2'
    }
}

plugins {
    id 'idea'
}

idea {
    module {
        sourceDirs += file('generated/')
        generatedSourceDirs += file('generated/')
    }
}

dependencies {
    // QueryDSL
    compile "com.querydsl:querydsl-jpa:${queryDslVersion}"
    annotationProcessor("com.querydsl:querydsl-apt:${queryDslVersion}:jpa")

    // Lombok
    compileOnly "org.projectlombok:lombok:${lombokVersion}"
    annotationProcessor "org.projectlombok:lombok:${lombokVersion}"
    implementation("org.projectlombok:lombok:${lombokVersion}")

    annotationProcessor("org.springframework.boot:spring-boot-starter-data-jpa:${springBootVersion}")

    /* TEST */
    // Querydsl
    testCompile "com.querydsl:querydsl-sql:${queryDslVersion}"
    testAnnotationProcessor("com.querydsl:querydsl-apt:${queryDslVersion}")

    // Lombok
    testImplementation("org.projectlombok:lombok:${lombokVersion}")
    testAnnotationProcessor("org.projectlombok:lombok:${lombokVersion}")
    testCompileOnly("org.projectlombok:lombok:${lombokVersion}")

}

附加信息:https://github.com/querydsl/querydsl/issues/2444#issuecomment-489538997

© www.soinside.com 2019 - 2024. All rights reserved.