使用 sbt-native-packager 时的配置目录

Posted

技术标签:

【中文标题】使用 sbt-native-packager 时的配置目录【英文标题】:config directory when using sbt-native-packager 【发布时间】:2014-01-27 16:48:56 【问题描述】:

我想问一下这个事实背后的原因,即 sbt-native-packager 插件创建了一个符号链接 /etc/ -> /usr/share//conf (而不是真正将文件放在那里并以某种方式在应用程序在哪里寻找它们)?

特别是它如何影响更新/卸载+安装过程?配置是否以某种方式保留(例如对于具有 java_server 架构设置的 debian)?

【问题讨论】:

【参考方案1】:

我想问一下 sbt-native-packager 插件创建符号链接 /etc/ -> /usr/share//conf 的事实背后的原因

将所有内容保存在一个地方。您拥有包含所有内容的应用程序目录,然后您只需从特定于操作系统的文件夹链接到应用程序文件夹中的相应目录。

配置是否以某种方式保留了

确实如此。您可以使用简单的播放应用程序进行尝试。将此添加到您的 build.sbt

mappings in Universal <+= (packageBin in Compile, baseDirectory ) map  (_, base) =>
     val conf = base / "conf" / "application.conf"
     conf -> "conf/application.conf"
 

这会将您的 application.conf 映射到 conf 文件夹中。当你用

构建一个debian包时
debian:packageBin

您可以在 target/-/DEBIAN/conffiles 中看到一个条目

/usr/share/<app-name>/conf/application.conf

apt-get remove your-app 不会删除此文件,只有 purge

【讨论】:

不幸的是,它不适用于 Universal:packageZipTarball 这是有道理的。因为 tarball 不是像 deb 或 rpm 这样的原生操作系统打包格式。

以上是关于使用 sbt-native-packager 时的配置目录的主要内容,如果未能解决你的问题,请参考以下文章

任何使用 sbt-native-packager 的好例子

如何使用 sbt-native-packager 设置 Docker Registry

扩展 sbt-native-packager (Docker)

使用 sbt-native-packager 通过 JavaServerAppPackaging 检测 prometheus 导出器

使用 sbt-native-packager 构建 docker 包时重复映射

如何在多个项目中使用 sbt-native-packager