如何使QueryDSL和龙目岛一起工作

2022-09-04 06:14:37

当一个方法或变量用龙目岛注释时,maven插件将通过处理JPA的源代码生成来抱怨。

我在控制台日志中收到此类故障:

symbol:   class __
location: class ServiceBaseMessage
C:\workspaces\[...]\service\ServiceBaseMessage.java:44: error: cannot find symbol
@Getter(onMethod = @__({ @JsonProperty("TYPE") }))

如何使用于JPA注释的apt-maven-插件和queryDSL处理器与龙目岛注释一起工作?


答案 1

这个解决方案对我有用。添加您的 apt-maven-plugin 配置。lombok.launch.AnnotationProcessorHider$AnnotationProcessor

<plugin>
    <groupId>com.mysema.maven</groupId>
    <artifactId>apt-maven-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>process</goal>
            </goals>
            <configuration>
                <outputDirectory>target/generated-sources/java</outputDirectory>
                <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor,lombok.launch.AnnotationProcessorHider$AnnotationProcessor</processor>
            </configuration>
        </execution>
    </executions>
</plugin>

它似乎也以同样的方式与gradle一起工作:请参阅 https://github.com/ewerk/gradle-plugins/issues/59#issuecomment-247047011


答案 2

这是GRADLE用户的语法(maven用户请看看其他答案)

这会将龙目岛正确添加到您的项目中,然后配置jpa处理器

plugins {
 ...
  id 'io.franzbecker.gradle-lombok' version '1.7'
}
project.afterEvaluate {

  project.tasks.compileQuerydsl.options.compilerArgs = [
          "-proc:only",
          "-processor", project.querydsl.processors() +
                  ',lombok.launch.AnnotationProcessorHider$AnnotationProcessor'
  ]
}

这是QueryDSL和Lombok的工作版本。依赖项由插件导入,因此不需要声明依赖项:

buildscript {
    repositories {
        mavenCentral()
    }
}

plugins {
    id 'io.franzbecker.gradle-lombok' version '1.7'
    id "com.ewerk.gradle.plugins.querydsl" version "1.0.9"
}

querydsl {
    jpa = true
}

// plugin needed so that the
project.afterEvaluate {
    project.tasks.compileQuerydsl.options.compilerArgs = [
            "-proc:only",
            "-processor", project.querydsl.processors() +
                    ',lombok.launch.AnnotationProcessorHider$AnnotationProcessor'
    ]
}
dependencies {
    compile group: 'com.querydsl', name: 'querydsl-jpa', version: '4.1.3'
}

推荐