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>
我正在处理一个小的 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>