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

时间:2018-12-18 21:33:17

标签: spring-boot spring-boot-maven-plugin

如果您访问官方Lombok Maven guide,则会看到其范围应为union。 当我使用start.spring.io从头开始创建新项目并添加Lombok时,在生成的pom中仅得到provided。 然后我像这样打包Spring boot应用程序,出于好奇,决定看看打包在jar中的内容:

  

MVN清洁包-DskipTests = true &&解压缩target / demo-0.0.1-SNAPSHOT.jar -d爆炸

Lombok已打包,无论我将范围设置为<optional>true</optional>还是只有provided都没关系。

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

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

  

mvn spring-boot:repackage

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

  

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

2 个答案:

答案 0 :(得分:4)

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

要从最终的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>

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

答案 1 :(得分:1)

看起来这是您的依赖项之一的传递性依赖项。如果确认,则知道该怎么办。