如何使用 sbt-native-packager 创建 Upstart Zip 包?

Posted

技术标签:

【中文标题】如何使用 sbt-native-packager 创建 Upstart Zip 包?【英文标题】:How can I create an Upstart Zip package using sbt-native-packager? 【发布时间】:2019-02-27 00:29:36 【问题描述】:

我无法生成新贵 zip 包。 我已将以下内容添加到我的 sbt 项目中

...
enablePlugins(UpstartPlugin).
enablePlugins(JavaServerAppPackaging)

然后运行

sbt clean universal:packageBin

生成了一个 Zip 文件,但它包含 ./bin 中的 shell 脚本和 ./lib 中的 jar,看起来就像我使用 JavaAppPackaging 时生成的一样!

upstart 所需的 conf 文件等在哪里? 是我遗漏了秘方还是使用了错误的咒语?

阅读this page 的所有文档我的印象是原型插件决定了我的包中的内容,而格式插件决定了包的形式。

例如,我可以有一个 Java 服务器项目,该项目旨在使用 JavaServerAppPackaging(原型)并添加 daemonUser 设置以守护程序用户身份运行,然后将其捆绑为 Zip 或 Tar .gz 使用 Universal(格式)插件或 .deb 文件使用 Debian(格式)插件。

嗯,我想要一个 Java 服务,其中包含使用upstart System Loader 启动但打包为 Zip 文件所需的所有文件。所以我假设我需要upstart(原型系统加载器)插件和universal(格式)插件。

在系统加载器文档中甚至有一条关于新贵插件的提示

您可以将系统加载器与 Java 应用程序原型或 Java 服务器应用程序原型一起使用!

这正是我想要的但是它没有说明如何去做!

请有人告诉我如何获得一个带有启动 Java 服务器应用程序的新贵布局的 zip 包?如果你能指出我明显错过的文档,那也会有助于我的理解:-)

干杯

卡尔

【问题讨论】:

【参考方案1】:

感谢您如此仔细地准备文档,很抱歉文档缺少说明哪些包类型支持系统加载器。

简短的回答是:只有 rpmdebian 软件包支持系统加载程序(systemd、systemV 和 upstart)。

为什么会这样?系统加载程序与目标操作系统紧密相关。这不是通用,这就是它不在其中的原因。配置文件和/或脚本和平台相关,这不是您常规应用程序目录的一部分。

干杯, 渚

【讨论】:

谢谢 Muki,我确实在文档中记错了……我猜大脑会看到它想看到的东西。 然而,Upstart 确实定义了它希望找到某些文件的位置 (manpages.ubuntu.com/manpages/trusty/man5/init.5.html#files),因此可以准备一个可以压缩或 tar.gz 的阶段目录。原型和格式插件之间的分离仍然可以保持吗?我错了吗?但是拥有灵活性会很好,如果我尝试在不知道如何处理它的操作系统中运行新贵 zip,那将是我的错,就像尝试在操作系统中运行 .deb 一样不支持 apt 。但再次感谢您回答我的问题并向我展示了我误读的内容。 ps 它在哪里“清楚地说明了哪些包类型支持系统加载程序”?我又看了一遍又错过了? 我真的写了一个糟糕的答案。在移动设备上自动更正? 我的意思是我很抱歉目前没有描述这个的部分。非常误导我写的东西?

以上是关于如何使用 sbt-native-packager 创建 Upstart Zip 包?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 sbt-native-packager 设置 docker 镜像名称

如何使用 sbt-native-packager 创建基本项目设置

如何使用 sbt-native-packager 更改通用 zip 文件名

如何使用 sbt-native-packager 创建 Upstart Zip 包?

如何使用 sbt-native-packager 在 Docker 中使二进制文件可执行?

如何在运行时为使用 sbt-native-packager 捆绑的应用程序加载配置文件