java - 我们可以配置 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>
解决方案
我想你可以尝试用 maven 排除它。这已经在这里回答了。
推荐阅读
- c# - 在 Linux Docker 中使用 .Net 标准库运行 .Net Core 应用程序
- ios - 如何通过 SecureEnclave 持久存储加密数据
- php - Laravel 默认登录身份验证生成意外错误
- javascript - 将国家/地区从 json 文件填充到 angular2-multiselect
- python - (discord.py)我怎样才能让我的机器人在当前命令完成之前不回复其他命令
- xpath - XPath 仅包含整个单词
- node.js - Vue/Node:由于 pkcs 错误而无法安装 Video.js
- python - 如何在 django 一天中的特定时间更新一些信息?
- javascript - 如何在一次尝试中捕获两个等待中的错误
- javascript - 如何在鼠标按下时显示动态创建的元素