如何防止lombok打包到Spring Boot jar中?

Kir*_*ill 0 spring-boot spring-boot-maven-plugin

如果您访问Lombok Maven官方指南,您会发现它的范围应该是provided。当我使用start.spring.io从头开始创建一个新项目并添加Lombok时,它只会出现<optional>true</optional>在生成的pom中。然后我像这样打包Spring boot应用程序,出于好奇,决定看看打包在jar中的内容:

mvn clean package -DskipTests = true &&解压缩target / demo-0.0.1-SNAPSHOT.jar -d分解

Lombok已打包,无论我将作用域设置为provided还是仅具有optional=true

如何防止Lombok包含在Spring Boot jar中?

我最后的想法是尝试使用Spring Boot插件附带的另一个目标:

mvn spring-boot:重新打包

但不幸的是,它产生以下错误:

重新打包失败:必须提供源文件

Ian*_*Lim 5

如果要打包war文件,则Lombok仅在lib提供的单独文件夹中可用,而不是通常的lib文件夹中可用。

为了将lombok从最终的jar / war文件中完全排除,您必须执行以下操作:

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

有关更多详细信息,请参阅排除Spring Boot Maven插件的依赖项部分https://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/exclude-dependency.html