sbt-native-package Debian 与 JDKPackager

sbt-native-package Debian versus JDKPackager

我正在尝试了解这两种安装程序之间的区别。理想情况下,我希望能够 not 捆绑 Java 但具有(因为它应该在 Debian 上)包依赖性。这适用于 Debian plugin:

enablePlugins(DebianPlugin)

debianPackageDependencies in Debian += "java6-runtime"

理想情况下,我希望为我的桌面管理器(例如 Gnome)、处理图标、启动和 jvm 选项以及文件关联提供一个 .desktop 条目。这由 JDKPackager plugin:

自动处理
enablePlugins(JDKPackagerPlugin)

jdkAppIcon := ...

jdkPackagerJVMArgs := Seq("-Xmx1g")

jdkPackagerAssociations += FileAssociation(
  "foobar", "application/foobar", "Foobar file type", myIcon)

我如何实现结合这两个功能的安装,包依赖性和桌面应用程序集成?

JDKPackager 与其他插件存在一种平行世界,因为它试图将标准 sbt-native-packager 键(和一些附加键)转换为 Oracle Java 8 javapackager 工具接受,将所有 "hard" 工作委托给外部工具。它通过 JDK 随附的一组 Ant 任务执行此操作,这些任务通过 target/jdkpackager 目录中创建的 build.xml 文件调用。

LinuxPlugin 方面,它们更多地是从头开始构建的,可能考虑了服务器类型的应用程序。

虽然 Oracle 继续向 javapackger 系统添加新功能,但它的文档通常参差不齐且不完整(截至撰写本文时),因此可能存在一些可能但未通过 [公开的功能=11=]键。如果您在 Oracle Ant 任务中发现可以帮助您实现最终目标的内容,请毫不犹豫地向该项目提交问题或 PR。公开针对 Ant 任务参数的附加设置通常是一个简单的过程。

您可能还会发现,通过 javapackager "drop-in resources" 工具,您可以覆盖生成的 .deb 定义文件的某些部分。也就是说,我只在 MacOS 和 Windows 上使用过它(它可以工作,但有点繁琐),并且不知道通过 .deb.rpm 暴露的确切内容管道。