QueryDSL процессор аннотаций и плагин Gradle - PullRequest
0 голосов
/ 28 января 2020

Не могу понять, как настроить build.gradle для использования процессора аннотаций querydsl без jpa / jdo / mon go. Я хочу использовать аннотацию @QueryEntity для генерации классов Q, поэтому я смогу создавать динамические c SQL запросы с использованием поддержки DSL, а затем преобразовывать запросы в простой текст и предоставлять их в Spring R2DB C Исполнитель DatabaseClient.

Есть ли способ, который плагин grads querydsl apt и процессор аннотаций querydsl использовать для генерации классов Q с аннотациями @QueryEntity в файле build.gradle?

Я использую gradle 5, Spring Data R2DB C, 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()
}

1 Ответ

2 голосов
/ 28 января 2020

Вообще говоря, вы не должны использовать плагин 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}")

}

Дополнительная информация: https://github.com/querydsl/querydsl/issues/2444#issuecomment -489538997

...