簡體   English   中英

.class文件中不生成Lombok注解

[英]Lombok annotations are not generated in .class file

我正在使用 inteliJ pro 2020、java 11、 mavenlombok

運行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>
....

我嘗試過的解決方案:

  • 在編譯器設置中啟用注釋處理。
  • 在 pom.xml 的構建部分中使用和。
  • 從 pom 中刪除 annotationProcessor。

我的目標是創建該項目的 jar 並將其導入另一個項目。 問題是當我將 jar 導入另一個項目時,所有 lombok 注釋都丟失了,我可以使用 get 和 set 方法..有什么建議嗎?

Lombok 注釋不應該出現在已編譯的代碼中。 lombok 的重點是生成樣板代碼,但使編譯后的字節碼看起來不像它。 原因是lombok注釋聲明中的RetentionPolicy:

@Retention(RetentionPolicy.SOURCE)

意味着注釋將在編譯步驟后被刪除,而不是字節碼的一部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM