![](/img/trans.png)
[英]How to (quickly) replace all Lombok annotations with generated methods?
[英]Lombok annotations are not generated in .class file
我正在使用 inteliJ pro 2020、java 11、 maven
和lombok
。
运行mvn clean install
后,会生成 jar。 当我检查 jar 中的特定 class 文件时,该文件具有一些lombok
注释,例如@Data, @NoArgsConstructor, @Setter
,这些注释丢失了。
例如:
原装class:
import com.fasterxml.jackson.annotation.JsonTypeName;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import java.util.Date;
import java.util.Set;
import org.apache.logging.log4j.util.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Data
@Setter
@NoArgsConstructor
@JsonTypeName("Bclass")
@Slf4j
public class B extends A{
jar 中的 .class 文件:
import com.fasterxml.jackson.annotation.JsonTypeName;
import java.util.Date;
import java.util.Set;
import org.apache.logging.log4j.util.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@JsonTypeName("Bclass")
public class B extends A{
lombock 注释和导入消失了。
我当前的 pom 设置:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<compilerVersion>11</compilerVersion>
<release>11</release>
<annotationProcessors>
<annotationProcessor>lombok.launch.AnnotationProcessorHider$AnnotationProcessor</annotationProcessor>
</annotationProcessors>
</configuration>
</plugin>
</plugins>
</build>
......
<dependencies>
.....
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
....
我尝试过的解决方案:
我的目标是创建该项目的 jar 并将其导入另一个项目。 问题是当我将 jar 导入另一个项目时,所有 lombok 注释都丢失了,我可以使用 get 和 set 方法..有什么建议吗?
Lombok 注释不应该出现在已编译的代码中。 lombok 的重点是生成样板代码,但使编译后的字节码看起来不像它。 原因是lombok注释声明中的RetentionPolicy:
@Retention(RetentionPolicy.SOURCE)
意味着注释将在编译步骤后被删除,而不是字节码的一部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.