Lombok没有通过Maven生成代码

时间:2015-09-29 19:55:48

标签: java maven lombok

我正在研究一个小jar lib,并且遇到了我以前没有遇到的Lombok问题。出于某种原因,lombok在Maven构建期间不会生成代码。

要清楚,这不是IDE问题。我正在使用Intellij 14并配置了Lombok插件。 Intellij运行正常,Intellij编译器甚至可以用于我的单元测试。

当我运行完整的Maven安装(来自Intellij或命令行)时,我的单元测试中出现了关于Lombok生成的方法的错误。如果我反编译.class文件,则代码丢失。

这是一个简单的类:

   @Data
   @Builder
   @AllArgsConstructor
   @NoArgsConstructor
   public class PhoneNumber {
       public String areaCode;
       public String prefix;
       public String number;

       [... a couple of simple hand-written methods...]
   }

在反编译时生成如下所示的代码:

> javap.exe PhoneNumber.class 

Compiled from "PhoneNumber.java"
public class com.example.PhoneNumber {
  public java.lang.String areaCode;
  public java.lang.String prefix;
  public java.lang.String number;
  public com.example.PhoneNumber();
  [... a couple of simple hand-written methods...]
}

没有生成任何方法,单元测试失败。

pom.xml中的条目似乎正常:

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.16.6</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>

  <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>2.3</version>
          <configuration>
            <source>1.7</source>
            <target>1.7</target>
          </configuration>
        </plugin>
      </plugins>
  </build>

1 个答案:

答案 0 :(得分:3)

maven-compiler-plugin版本不兼容。我确认不会使用您正在使用的pom.xml处理lombok注释。但如果您使用最新版本,一切都会正常建立。

<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>