gpt4 book ai didi

java - 部署 Spring Boot Fat jar

转载 作者:行者123 更新时间:2023-12-01 09:26:02 24 4
gpt4 key购买 nike

我有一个在生产环境中运行良好的 Spring Boot 应用程序,但是最近我对 fat jar 部署策略有一些疑问。fat jar 的总大小约为 80 MB,因为每次它都捆绑为单个 jar即使我更改一行,这个 80 MB 的包也会被重新部署。我怎样才能把这个 fat jar 子分成主 jar 和/lib目录中的其他 jar (不是我开发的)。我有什么选择?

最佳答案

您有几个选择,最简单的方法( and suggested by official docs )就是提取 fat jar 文件。

$ unzip -q myapp.jar
$ java org.springframework.boot.loader.JarLauncher

这有几个问题,首先,您的应用程序代码现在将是一堆类文件(不在它自己的 jar 中)。
第二个问题是您仍在使用 spring-boot 加载程序,它不再提供那么多实用程序,并且还会污染文件系统。

另一个选择是更改您的构建以提供您想要的内容。
使用 gradle,您可以使用 application plugin ,对于maven,我会推荐appassembler plugin

Appassembler 生成目录 target/appassembler/,其中包含一个带有启动脚本的 bin 目录,以及一个包含所有依赖项的 repo 目录。

要使用它,您需要禁用 spring-boot:repackage 任务,并告诉 appassembler 插件您的主类是什么。

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<skip>true</skip>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.10</version>
<configuration>
<programs>
<program>
<mainClass>com.example.MyMainClass</mainClass>
<id>myappname</id>
</program>
</programs>
</configuration>
</plugin>
</plugins>
</build>

关于java - 部署 Spring Boot Fat jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39821278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com