sbt-native-package Debian 与 JDKPackager

Posted

技术标签:

【中文标题】sbt-native-package Debian 与 JDKPackager【英文标题】:sbt-native-package Debian versus JDKPackager 【发布时间】:2015-10-17 19:09:27 【问题描述】:

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

enablePlugins(DebianPlugin)

debianPackageDependencies in Debian += "java6-runtime"

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

enablePlugins(JDKPackagerPlugin)

jdkAppIcon := ...

jdkPackagerJVMArgs := Seq("-Xmx1g")

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

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

【问题讨论】:

我认为 jdkpackager 是要走的路。它配置了一个 ant build.xml 。检查它是否提供排除 jre 的方法。您也可以在我们的 github 页面上创建功能请求。 【参考方案1】:

JDKPackager 存在于与其他插件类似的世界中,因为它尝试将标准的 sbt-native-packager 键(和一些附加键)转换为 Oracle Java 8 javapackager 工具接受的形式,委托所有外部工具的“艰苦”工作。它通过一组随 JDK 一起交付的 Ant 任务来执行此操作,这些任务通过在 target/jdkpackager 目录中创建的 build.xml 文件调用。

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

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

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

【讨论】:

以上是关于sbt-native-package Debian 与 JDKPackager的主要内容,如果未能解决你的问题,请参考以下文章

sbt-native-package Debian 与 JDKPackager

在 sbt-native-packager for debian:package-bin 的类路径中添加 /etc/<application>

构建 deb 包时无法使用 sbt-native-packager 打包 cron 作业

Sbt-Native-Packager 控制文件与 .deb 创建的名称不一致

Sbt-native-packager 在两台不同的机器上生成两个不同的包

SBT 使用 sbt-native-packager 如何创建不同的构建文件?