【问题标题】:How to exclude lib-provided from spring boot如何从 Spring Boot 中排除 lib-provided
【发布时间】:2016-02-13 21:21:53
【问题描述】:

我的春季靴战太大了,我想进行一些优化。 SPring boot 可以选择与java -jar 运行战争,这就是为什么lib-provided(与所有provided 依赖项)仍然在战争中,即使那里不需要依赖项(我永远不会将它作为独立运行)。我能否以某种方式禁用这个巧妙的功能,以便节省一些空间?

更新:我正在使用 Maven 和 spring boot maven 插件。

【问题讨论】:

标签: java maven spring-boot


【解决方案1】:

默认情况下,Spring Boot Maven 插件会将您的应用程序重新打包到可执行的 WAR/JAR 中。

original(即不可执行)工件默认重命名为 .original,但也可以使用自定义分类器保留原始工件。参考Spring Documentation

例如:

如果您的应用程序被命名为 MyApplication 并且您尝试将其打包到 WAR 中,将发生以下步骤:

  1. 应用程序将首先像往常一样构建,您将获得MyApplication-0.0.1-SNAPSHOT.war
  2. 然后spring boot maven插件会重新打包成可执行WAR(同名),并将原来打包的应用重命名为MyApplication-0.0.1-SNAPSHOT.war.original
  3. 您现在有两个打包的应用程序:
    • MyApplication-0.0.1-SNAPSHOT.war(Spring Boot 可执行文件)
    • MyApplication-0.0.1-SNAPSHOT.war.original(不可执行的应用程序)

您可以一起删除 Spring Boot Maven 插件,也可以使用非可执行版本。

【讨论】:

    【解决方案2】:

    您可以根据此文档更新您的 pom 文件:

    https://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/exclude-dependency.html

    唯一的问题是你不能“排除所有”

    例如:

    <build>
     <plugins>
       <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <excludeGroupIds>com.packagename,com.secondpackage</excludeGroupIds>
             <excludeArtifactIds>myartifact,artifactname2</excludeArtifactIds>
            </configuration>
            </plugin>
        </plugins>
    </build>
    

    【讨论】:

      【解决方案3】:

      不要使用 Spring-Boot 重新打包插件,如果你永远不会将它作为独立运行它。 使用您的普通 maven war 插件(不包括提供的依赖项),这对于已部署的工件来说已经足够了。

      【讨论】:

        猜你喜欢
        • 2023-03-05
        • 2017-11-11
        • 2018-02-16
        • 1970-01-01
        • 2019-02-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-08
        相关资源
        最近更新 更多