将 Java (JRE) 捆绑到 spring-boot package/jar?

Bundling Java (JRE) into a spring-boot package/jar?

有没有办法将 spring-boot 应用程序捆绑到一个包含 JRE 的可执行 jar 中?

我想我看到有人这样做了(Josh Long?)这导致了一个你可以通过 java -jar foo.jar 甚至 ./foo.jar

启动的罐子

我在最后一个小时用谷歌搜索了这个,但找不到任何相关文档,有人可以帮助我吗?

编辑:

我刚刚找到了我在会议上看到的内容。 spring-boot 1.3 引入了一种叫做可执行 jar 的东西,wrap the jar with a shell script。 启用它可以像 ./my.jar 一样 运行 你的 jar 并将其绑定到 unix 初始化系统。 但是,您仍然需要在主机上安装 java。

在 gradle 中启用此功能就像将其添加到 build.gradle

中一样简单
springBoot {
    executable = true
}

可能您正在使用 Maven。 maven plugin allows you to create single jar file with all dependencies. Next you can use tool such as jwrapper 允许为许多平台构建带有嵌入式 JRE 的可执行文件。

您应该考虑使用 Java 安装程序/包装器,它将创建一个包含您的代码/jar 和 JRE 的本机二进制文件(某些解决方案甚至可以为您下载 JRE) 积极的副作用是您(如果需要)可以为 Linux、Windows 和 Mac.

创建解决方案

如果您想坚持使用简单的 Linux 唯一解决方案,您可能想试试这个:Bash script containing binary executable