【发布时间】:2017-10-27 11:57:15
【问题描述】:
我有一个 Spring Boot 项目,我正在以可执行 jar 的形式运行,该 jar 在 Linux 上作为 init.d 服务启动。
我知道我可以创建一个与 jar 文件同名的 .conf 文件来指定 JVM 参数。但是,理想情况下,我希望对一些参数进行“硬编码”,这样就不会有 .conf 文件丢失的风险。这是一个真正的风险,因为每个部署都会因为版本号而具有不同的 jar 名称。
我也知道我可以设置环境变量 JAVA_OPTS,但如果我使用 jar 文件的符号链接将 Spring Boot 作为 init.d 服务启动,我不确定如何设置。
最后,我知道我可以使用 embeddedLaunchScript 参数完全替换 init.d 脚本,但我为我想要完成的任务而放弃了这种过度杀伤力,并希望在进一步的版本中更新脚本。
有没有办法在 Maven 插件或其他一些编程方法中指定 JVM 参数?
另外有没有办法硬编码静态 CONF 文件名?查看embeddedLaunchScriptProperties 看起来 confFolder 可以是文件夹,但不是 .conf 文件的名称。
【问题讨论】:
-
我想我对选项有充分的了解,但想确保在输入改进 Maven 插件以允许将 JVM 参数传递给 EmbeddedLaunchScript 的功能请求之前没有遗漏任何内容- 谢谢
-
我认为这个答案可以解决您的问题:serverfault.com/a/462073
-
如果我理解这个答案,它涉及创建一个自定义脚本并使用 init.d 使该脚本成为服务我知道这是一个选项,但最终目标是使用参数部署文件,因此 embeddedLaunchScript相当于那个答案。
-
仅供参考,github.com/spring-projects/spring-boot/issues/2797 已重新打开,我正在实施解决方案。我会在发布时给出答案。
标签: spring-boot jvm-arguments init.d