我有一个在生产环境中运行良好的弹簧引导应用程序,但最近我有一些关于脂肪罐部署策略的问题。脂肪罐的总大小约为80 MB,因为它全部捆绑为单个jar,每次我改变一行,这个80 MB的软件包就会重新部署。我如何将这个胖罐子分割到/ lib目录下的主jar和其他罐子中(这些jar不是我开发的)。我有什么选择?部署弹簧引导脂肪罐
0
A
回答
1
你有几个选择,最简单的方法(and suggested by official docs)就是提取fat jar文件。
$ unzip -q myapp.jar
$ java org.springframework.boot.loader.JarLauncher
有几个与这个问题,首先是所有的应用程序代码现在是一堆类文件(而不是在它自己的jar)。
第二个问题是您仍在使用弹簧引导加载程序,该加载程序不再提供多少实用程序,并且还会污染文件系统。
另一种选择是改变你的构建,为你提供你想要的。
随着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>
+0
我会检查第二个选项,谢谢。 – cacert
相关问题
- 1. 如何以最小的内存运行弹簧引导脂肪罐?
- 2. 运行特定的弹簧批处理作业包含弹簧引导脂肪罐
- 3. Vertx Webroot在脂肪罐
- 4. 如何用gradle建立脂肪罐1.6
- 5. 如何为EE CDI建立脂肪罐?
- 6. maven创建与外部库的脂肪罐
- 7. 如果将静态内容部署为罐子弹簧引导404错误
- 8. 在一个项目中部署弹簧引导和弹簧安全
- 9. 重新部署弹簧引导服务而不重新启动?
- 10. 将弹簧引导部署到elasticbeanstalk并设置系统属性
- 11. “没有主要清单属性”当试图执行脂肪罐
- 12. 弹簧聚合罐
- 13. 与弹簧引导
- 14. Kotlin JSR-223脂肪罐内的ScriptEngineFactory - 无法找到Kotlin编译器罐
- 15. 从罐子导入弹簧豆
- 16. perl的脂肪逗号
- 17. 重构脂肪减少者
- 18. 什么是脂肪JAR?
- 19. UIToolbar与异常脂肪UISegmentedControl
- 20. 使用弹簧引导管理的非弹簧引导工程
- 21. 弹簧引导启动与弹簧引导起动XXX
- 22. 在不同的环境下建立弹簧引导罐
- 23. 运行弹簧引导罐时找不到或加载主类
- 24. 可执行的弹簧引导罐没有解析视图
- 25. 如何从弹簧引导罐中排除资源文件?
- 26. 无法从弹簧引导罐中读取文本文件
- 27. 如何运行外部类路径文件夹弹簧引导罐子
- 28. 如何从詹金斯部署弹簧引导应用程序罐到EC2机器
- 29. 弹簧罐依赖关系
- 30. 弹簧引导战争log4j2
你在用什么构建工具,Maven,Gradle? – Magnus
我正在使用maven。 – cacert
这是一个问题,因为?在删除包装时,您基本上也会删除所有依赖关系。现在,在升级某些东西时,您还必须确保将其复制到'/ lib'文件夹中。最终,由于/ lib文件夹中的旧/缺失依赖关系,某人删除了某些内容,将其复制到某些看起来很方便的东西中,从而导致某些内容会被破坏。通常这会给解决它带来麻烦。只需为您的存储库设置适当的内务管理(例如仅保存最后的x个版本)。 –