如何从spring boot

时间:2015-11-12 14:07:31

标签: java maven spring-boot

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

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

4 个答案:

答案 0 :(得分:10)

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

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

例如:

如果您的应用程序名为MyApplication,并且您尝试将其打包为WAR,则会执行以下步骤:

  1. 首先应该像往常一样构建应用程序,然后获得MyApplication-0.0.1-SNAPSHOT.war.original
  2. 然后spring boot maven插件会将其重新打包成可执行的WAR(具有相同的名称),并将原始打包的应用程序重命名为MyApplication-0.0.1-SNAPSHOT.war
  3. 您现在有两个打包的应用程序:
    • MyApplication-0.0.1-SNAPSHOT.war.original(Spring启动可执行文件)
    • do: block(非可执行申请)
  4. 您可以一起删除Spring Boot Maven插件,也可以使用Non-Executable版本。

答案 1 :(得分:1)

请勿使用Spring-Boot重新打包插件,如果您永远不会将其独立运行。 使用您的常规maven war插件(不包括提供的依赖项),这对于已部署的工件就足够了。

答案 2 :(得分:0)

您可以根据以下文档更新您的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 :(得分:0)

我有类似的问题。

下面是我添加的用于删除lib提供的jars的解决方案

Please comment all the tomcat dependencies in the pom.xml or in build.gradle which eventually removes the jars in the lib-provided folder.

如果在本地运行应用程序时遇到任何问题,则将tomcat / jboss或任何其他服务器lib文件夹添加到类路径中。