首页 > 解决方案 > 我们可以配置 Spring Boot Executable Jar 吗?

问题描述

我有一个基于 maven 的 spring boot 应用程序,并且有几个模块。我确实使用了一个spring-boot-maven-plugin,但是,这个插件只用于其中一个模块。尽管每个模块的单独 jar 文件非常小,但我使用此插件的主模块生成的可执行文件非常大(大约 750 MB)。

我扩展了创建的 jar 文件,有点惊讶地发现它已经为多个操作系统(如 windows、linux、android 等)捆绑了 jar 文件。

如果您opncsv在下面的屏幕截图中看到 jar 文件,它似乎已经为 13 个不同的操作系统捆绑了这些 jar!

我知道以这种方式创建的可执行文件将可以在跨平台上运行,但只是想知道是否有办法配置这个可执行文件的创建,以便它只为某些操作系统打包,例如我运行这个应用程序的 linux。

在我的情况下,大型可执行文件似乎有点矫枉过正。

在此处输入图像描述

这是插件

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                    <configuration>
                        <classifier>exec</classifier>
                        <mainClass>org.blabla.products.webapp.Application</mainClass>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

这是我正在使用的不同 jar 的依赖版本。

<properties>
    <java.version>1.8</java.version>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <mysql-connector-java.version>5.1.40</mysql-connector-java.version>

    <!--CHECKED FOR CURRENCY AND UPGRADED AS NEEDED ON 1/27/2019-->
    <findbugs-maven-plugin.version>3.0.5</findbugs-maven-plugin.version>
    <jacoco-maven-plugin.version>0.8.2</jacoco-maven-plugin.version>
    <springfox-swagger2.version>2.9.2</springfox-swagger2.version>
    <org.jsoup.version>1.11.3</org.jsoup.version>
    <opencsv.version>4.4</opencsv.version>
    <httpclient.version>4.5.6</httpclient.version>
    <dl4j.version>1.0.0-beta3</dl4j.version>
    <spring-web.version>5.1.4.RELEASE</spring-web.version>
    <gson.version>2.8.5</gson.version>
    <ehcache.version>3.6.3</ehcache.version>
    <guava.version>27.0.1-jre</guava.version>
    <thymeleaf-extras-springsecurity4.version>3.0.4.RELEASE</thymeleaf-extras-springsecurity4.version>

</properties>

标签: javaspringmavenspring-boot

解决方案


我想你可以尝试用 maven 排除它。这已经在这里回答了。


推荐阅读