为什么我在使用 LOMBOK 时必须在 spring-boot-maven-plugin 中添加排除?

Tes*_*ser 8 spring intellij-idea lombok spring-boot intellij-lombok-plugin

我正在尝试在我的项目中使用 Lombok。我的问题是我必须在 POM.xml 中添加 Lombok 依赖项,如下所示

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>
Run Code Online (Sandbox Code Playgroud)

a) 为什么我必须在标签下添加以下代码build?下面的排除有什么必要?

<build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>
              <groupId>org.projectlombok</groupId>
              <artifactId>lombok</artifactId>
            </exclude>
          </excludes>
        </configuration>
      </plugin>
    </plugins>
  </build>
Run Code Online (Sandbox Code Playgroud)

b) 为什么我需要安装 LOMBOK 插件作为 IntelliJ idea 设置的一部分?

谁能用简单通俗的语言解释一下,以便我了解基础知识?

Sim*_*lli 7

a) Lombok 是一个注释处理器,仅在编译时需要。这就是它被排除在外的原因。

此配置显式地从目标工件中删除 Lombox。

b) IntelliJ 不使用 Maven 来编译您的代码。为了处理 Lombok 注释,必须激活 IntelliJ 插件。

IntelliJ 使用内部机制来编译代码。

c) Lombok 从注释生成代码。例如

@Getter
public class Employee() {
  private String name;
}
Run Code Online (Sandbox Code Playgroud)

String getName()将在编译时生成。

因此运行时不需要 Lombok。

  • 您似乎已经回答了,但没有完全解释,以便我能够理解。由于您的回答,我现在有更多问题。a) 如果某个插件只在编译时需要,那么它与 &lt;build&gt; 标签下的排除有什么关系?b) 如果 intelliJ 不使用 maven 那么它使用什么?我的是一个 Maven 项目,那么如果不是 Maven,IntelliJ 使用什么?c) 如果 Lombok 仅在编译时需要,那么运行时如何工作? (3认同)