java - 如何从 spring boot 中排除 lib-provided

标签 java maven spring-boot

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

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

最佳答案

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

默认情况下,original(即不可执行) Artifact 重命名为 .original,但也可以使用自定义分类器保留原始 Artifact 。引用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 启动可执行文件)
    • MyApplication-0.0.1-SNAPSHOT.war.original(不可执行的应用程序)

您可以一起删除 Spring Boot Maven 插件或使用不可执行版本。

关于java - 如何从 spring boot 中排除 lib-provided,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33673354/

相关文章:

java - 设置 ArrayList 的最大限制

java - 我可以使用 Java 泛型在 Java 中对同一接口(interface)进行不同的实现吗?

java - JUNIT 自定义运行程序无法从 Maven 测试目标中识别出来

android - : "Importing Maven projects". com/android/io/StreamException 期间发生内部错误

spring-boot - 如何在 Spring boot 2.1.0 启动器配置中将 spring.main.allow-bean-definition-overriding 设置为 true

java - SpringBoot openJ9 Kubernetes崩溃InterpreterEmulator.cpp:208

java - 使用java中的三种方法和for循环求平均值

java - 如何禁用 javac 文件名检查?

java - Maven - 如何自定义依赖项的构建?

java - 如何在客户端接口(interface)中注入(inject)Mockito服务层