Lombok 不通过 Maven 生成代码

Lombok is not generating code through Maven

我正在处理一个小的 jar 库,我遇到了一个以前没有遇到过的 Lombok 问题。出于某种原因,lombok 在 Maven 构建期间没有生成代码。

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

当我 运行 完整安装 Maven(从 Intellij 或命令行)时,我在围绕 Lombok 生成的方法的单元测试中遇到错误。如果我反编译 .class 文件,代码会丢失。

如此简单的 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>

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

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