Java 11 + QueryDSL 4 + Gradle 5 + SpringBoot 2.1-不生成QClass

时间:2019-01-10 17:58:47

标签: spring-boot gradle querydsl lombok

我正在尝试将 QueryDSL,Gradle和Springboot 集成到标题中的版本中。 我将注解处理器添加到了gradle中,但是Intellij仍然没有生成QClasses。我尝试了来自社区的建议,以使用插件“ gradle.plugin.com.ewerk.gradle.plugins:querydsl-plugin” 但这没有帮助。

dependencies{
   annotationProcessor("org.projectlombok:lombok:1.18.4")
   annotationProcessor("com.querydsl:querydsl-apt:4.2.1")
   annotationProcessor("org.springframework.boot:spring-boot-starter-data-jpa:2.1.1.RELEASE")

   compileOnly("org.projectlombok:lombok:1.18.4")
   implementation("com.querydsl:querydsl-jpa:4.2.1")
   implementation("com.querydsl:querydsl-apt:4.2.1:jpa")
   implementation("org.springframework.boot:spring-boot-starter-data-jpa:2.1.1.RELEASE")
   implementation("org.springframework.boot:spring-boot-starter-web:2.1.1.RELEASE")
}

5 个答案:

答案 0 :(得分:3)

您需要提供具体的注释处理器':jpa'

annotationProcessor("com.querydsl:querydsl-apt:4.2.1:jpa")

应该起作用:

dependencies{
   annotationProcessor("org.projectlombok:lombok:1.18.4")
   annotationProcessor("com.querydsl:querydsl-apt:4.2.1:jpa")
   annotationProcessor("org.springframework.boot:spring-boot-starter-data-jpa:2.1.1.RELEASE")

   compileOnly("org.projectlombok:lombok:1.18.4")
   implementation("com.querydsl:querydsl-jpa:4.2.1")
   implementation("org.springframework.boot:spring-boot-starter-data-jpa:2.1.1.RELEASE")
   implementation("org.springframework.boot:spring-boot-starter-web:2.1.1.RELEASE")
}

答案 1 :(得分:1)

我会给你我的工作配置:

ext {
    queryDslVersion = '4.2.1'
    lombokVersion = '1.8.6'
}
// https://stackoverflow.com/questions/42441844/annotation-processor-in-intellij-and-gradle/54611475#54611475
compileJava {
    options.annotationProcessorPath = configurations.annotationProcessor
}

dependencies {
  // ...

    compile(
            "com.querydsl:querydsl-core:${queryDslVersion}",
            "com.querydsl:querydsl-jpa:${queryDslVersion}"
    )

    compileOnly "org.projectlombok:lombok:${lombokVersion}"

    annotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}:jpa",
            "org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.2.Final",
            "javax.annotation:javax.annotation-api:1.3.2",
            "org.projectlombok:lombok:${lombokVersion}"
}

使用Gradle 5.2 +

答案 2 :(得分:0)

QueryDSL不适用于Gradle5。您可以检查this other questionplug-in issues了解更多信息。

似乎有些人设法使它与变通方法一起工作,例如链接问题中的变通方法,但这不是我的情况。我的团队最后不得不求助于HQL。

答案 3 :(得分:0)

谢谢@TecHunter。 目前,我正在执行一项特殊任务来处理和生成QueryDSL源

<FlexBox
    alignItems="Center"
    justifyContent="End">
    <items>
        <Button enabled="true" icon="sap-icon://navigation-right-arrow" class="sapUiSmallMarginEnd"/>
        <Button enabled="true" icon="sap-icon://open-command-field" class="sapUiSmallMarginEnd"/>
        <Button enabled="true" icon="sap-icon://process" />
    </items>
</FlexBox>

有什么想法可以这样吗?

答案 4 :(得分:0)

按照完全相同的顺序

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')

}