Spring引导WAR大小与不同的嵌入式服务器

时间:2015-03-17 19:56:11

标签: java tomcat spring-boot embedded-jetty undertow

我正在使用spring-boot进行som实验,并且我意识到当我使用嵌入式Tomcat服务器时,生成的WAR大小比使用Jetty甚至是具有相同其他依赖性的Undertow服务器时小。

这怎么可能? ...与tomcat相比,Undertow和Jetty应该是超轻型的。

尺寸为:

Tomcat~18Mb

Undertow~21Mb

Jetty~24Mb

它们中的任何一个对我来说都太大了,因为这是虚拟REST端点。 这些是我的依赖:

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jersey</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!-- <dependency> -->
        <!-- <groupId>org.springframework.boot</groupId> -->
        <!-- <artifactId>spring-boot-starter-tomcat</artifactId> -->
        <!-- </dependency> -->
        <!-- <dependency> -->
        <!-- <groupId>org.springframework.boot</groupId> -->
        <!-- <artifactId>spring-boot-starter-undertow</artifactId> -->
        <!-- </dependency> -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
        </dependency>
<!--        <dependency> -->
<!--            <groupId>org.springframework.boot</groupId> -->
<!--            <artifactId>spring-boot-starter-test</artifactId> -->
<!--            <scope>test</scope> -->
<!--        </dependency> -->
    </dependencies>

1 个答案:

答案 0 :(得分:9)

Spring Boot包括三个示例应用程序,spring-boot-sample-jettyspring-boot-sample-tomcatspring-boot-sample-undertow,具有最小且几乎完全相同的功能。使用Spring Boot 1.2.2.RELEASE,归档文件大小为:

  • spring-boot-sample-jetty - 12MB
  • spring-boot-sample-tomcat - 9.8MB
  • spring-boot-sample-undertow - 9.6MB

正如你所看到的,Tomcat和Undertow几乎相同,Jetty神器大约增加了20%。

尺寸差异的一个值得注意的原因是JSP支持。 Undertow不支持JSP,默认情况下Spring Boot不包含Tomcat的JSP支持。 ~7.7MB的基于Jetty的存档由用于JSP编译的Eclipse Java编译器占用。如果您想使用Jetty并且不使用JSP,则可以排除org.eclipse.jetty:jetty-jsp依赖项。这会将基于Jetty的工件的大小减小到8.8MB。