我正在研究一个小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>
答案 0 :(得分:3)
与maven-compiler-plugin
版本不兼容。我确认不会使用您正在使用的pom.xml
处理lombok注释。但如果您使用最新版本,一切都会正常建立。
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>