如何使QueryDSL和Lombok协同工作

jch*_*brt 9 java jpa maven lombok querydsl

当使用Lombok注释注释方法或变量时,maven插件将通过处理JPA的源代码来进行投诉.

我在控制台日志中遇到这种情况:

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

如何使用JPA注释的apt-maven-plugin和queryDSL处理器与lombok注释一起工作?

jch*_*brt 16

这个解决方案对我有用.添加lombok.launch.AnnotationProcessorHider$AnnotationProcessorapt-maven-plugin配置.

<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>
Run Code Online (Sandbox Code Playgroud)

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


Tou*_*umi 6

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

//这样可以将lombok正确添加到您的项目中,然后配置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'
  ]
}
Run Code Online (Sandbox Code Playgroud)

这是一个完整的工作版本查询,dsl和lombock由插件导入,不需要声明依赖项。

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'
}
Run Code Online (Sandbox Code Playgroud)