2017-06-13 80 views
3

当一个方法或变量使用Lombok注释注释时,maven插件会通过处理JPA的源代生成投诉。如何使QueryDSL和Lombok一起工作

我得到这种故障在控制台日志:

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

如何使容易,Maven的插件和queryDSL处理器JPA注释与龙目岛的注解一起工作?

回答

7

此解决方案适用于我。 在您的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

0

这里是语法摇篮用户(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' 
    ] 
} 

这是一个完整的工作版本 查询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' 
}