Lombok注释类

时间:2016-02-06 01:06:42

标签: intellij-idea gradle jhipster lombok

我有一个JHipster项目,我在build.gradle中添加了对Lombok的依赖:

compile group: 'org.projectlombok', name: 'lombok', version: lombok_version

我为IntelliJ停止了Lombok插件。我在IntelliJ中打开了注释处理,我可以在没有IntelliJ IDE错误的情况下构建,但是当我尝试从命令行构建时,我会遇到构建错误。似乎Gradle没有处理注释,也无法找到getter / setter和log声明。该项目也运行没有任何错误。

命令行:

./gradlew build

错误:

/Users/.../source/v4.0/src/main/java/com/.../service/MyService.java:145: error: cannot find symbol
        log.info("Security Context: " + SecurityUtils.getCurrentUserLogin());
        ^
  symbol:   variable log
  location: class MyService

错误:

/Users/.../source/v4.0/src/main/java/com/.../service/MyService.java:105: error: cannot find symbol
        myClass.setDescription(description);
                        ^
  symbol:   method setDescription(String)
  location: variable myClass of type MyClass

服务类:

import lombok.extern.slf4j.Slf4j; 
import org.springframework.stereotype.Service;

@Service
@Slf4j
public class MyService {      
    public void someMethod(){
        log.debug("Security Context: " + SecurityUtils.getCurrentUserLogin());
        MyClass myCLass = new MyClass();
        myClass.setDescription(description);
    }
}

实体类:

import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.persistence.Entity;
import javax.persistence.Table;

@Entity
@Table(name="t_juror_file_update")
@Getter
@Setter
@NoArgsConstructor
public class MyClass {

    private String description;

}

我一直试图弄清楚这几个小时,但完全卡住了。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:15)

您需要将lombok指定为注释处理器。为此,您需要在build.gradle项目中向Jhipster添加以下内容。

apply plugin: 'net.ltgt.apt'

dependencies {    
    provided "org.projectlombok:lombok:$lombokVersion"
    apt "org.projectlombok:lombok:$lombokVersion"

    /** ... */
}

Jhipster使用net.ltgt.gradle:gradle-apt-plugin进行注释处理。

对于IntelliJ设置,应检查Enable annotation Processing

更多信息:Project Lombok - android instructions

答案 1 :(得分:2)

我遇到了同样的问题,并在添加到build.gradle时为我工作:

dependencies{

compileOnly 'org.projectlombok:lombok:1.18.8'
annotationProcessor 'org.projectlombok:lombok:1.18.8'

}

资源:https://projectlombok.org/setup/gradle

答案 2 :(得分:1)

对于新用户,请考虑使用 gradle 插件:

plugins {
  id "io.freefair.lombok" version "5.3.3.3"
}

那么你就不需要 compileOnlyannotationProcessor

参考: https://plugins.gradle.org/plugin/io.freefair.lombok

答案 3 :(得分:0)

我在./gradlew clean build工作正常的情况下面临相同的问题,但是当我尝试进行gradle clean构建getter和setter方法时,该方法应该由lombok生成,而在gradle时找不到建立。 当它抛出编译失败的构建异常时

我早些时候有3.4.1的包装器包装器和5.6.2的gradle包装器。 所以我可以通过将Gradle版本降级到4.10.0来解决此问题 我的gradle包装器版本保持不变,即3.4.1

这是gradle版本

4.10级

构建时间:2018-08-27 18:35:06 UTC 修订:ee3751ed9f2034effc1f0072c2b2ee74b5dce67d

Kotlin DSL:1.0-rc-3 科特林:1.2.60 Groovy:2.4.15 蚂蚁:2018年3月23日编译的Apache Ant(TM)版本1.9.11 JVM:1.8.0_191(Oracle Corporation 25.191-b12) 操作系统:Mac OS X 10.14.6 x86_64

这是gradle包装器版本

3.4.1级

构建时间:2017-03-03 19:45:41 UTC 修订:9eb76efdd3d034dc506c719dac2955efb5ff9a93

时髦:2.4.7 蚂蚁:2015年6月29日编译的Apache Ant(TM)版本1.9.6 JVM:1.8.0_191(Oracle Corporation 25.191-b12) 操作系统:Mac OS X 10.14.6 x86_64

这对我有用