QueryDSL注释处理器和Gradle插件

在没有任何jpa / jdo / mongo的情况下,无法理解如何配置build.gradle以使用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:

database
a314913370 回答:QueryDSL注释处理器和Gradle插件

通常来说,您不应该使用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

,

我要花几个小时才能找到一个适用于 Kotlin 的解决方案,所以我想在这里留下这个答案(据我所知,这个问题没有Java限制,确实存在有关此的信息很少)。 Kotlin支持使用kapt plugin进行注释处理。为了将此插件用于QueryDSL,您需要1.定义kapt插件,并2.指定将进行处理的依赖项,在这种情况下为com.querydsl:querydsl-apt。我在插件执行过程中使用了general任务,但是根据documentation,还有其他可用选项(可能对JPA,JDO,Hiberante可能有一些额外的调整)

plugins {
    kotlin("kapt") version "1.4.10"
}
dependencies {
    implementation("com.querydsl:querydsl-mongodb:4.4.0")
    kapt("com.querydsl:querydsl-apt:4.4.0:general")
}

现在,每当您运行gradle build时,注释处理将触发使用@QueryEntity注释的类的DSL查询类生成。如果有人需要Kotlin,我希望它能有所帮助。

,

这对我有用(请在依赖项中遵循完全相同的顺序)

sourceSets {
  generated {
    java {
      srcDirs = ['build/generated/sources/annotationProcessor/java/main']
    }
  }
}


dependencies {
    api 'com.querydsl:querydsl-jpa:4.4.0'
    annotationProcessor 'org.projectlombok:lombok'
    annotationProcessor('com.querydsl:querydsl-apt:4.4.0:jpa')
    annotationProcessor('javax.annotation:javax.annotation-api')

}
本文链接:https://www.f2er.com/2698097.html

大家都在问