具有 jre 依赖关系的简单 java snap

具有 jre 依赖关系的简单 java snap

尊敬的 snap[craft] 专家们,

我正在为一个 Java 应用程序创建一个简单的快照:

name: freeplane-snap
version: 1.5.18-1
summary: Java program for working with Mind Maps
description: ...
confinement: devmode
grade: stable

apps:
  freeplane-snap:
    command: ./freeplane.sh

parts:
  main:
    plugin: dump
    source: freeplane-1.5.18/
    stage-packages: [openjdk-8-jre]
    filesets:
      mybuild:
        - "*"
    stage:
      - $mybuild
    snap:
      - $mybuild

Freeplane 使用 gradle 构建系统,但 snapcraft gradle 插件不够强大(需要“gradlew”而不是“gradle”,并且用于单个 jar 项目,即始终使用“jar”选项)。我可以在哪里提交此功能请求/补丁?

因此,我使用项目的二进制发行版(解压到 ./freeplane-1.5.18)和“dump”插件,效果很好。但是,由于我没有使用 Java 构建系统,因此 snap 中缺少 jre(运行“freeplane-snap”时出现无法找到 JDK 的错误,而不是直接运行 freeplane.sh 时出现的错误)。我尝试使用“stage-packages: [openjdk-8-jre]”添加它,但这没有帮助。

您能告诉我如何将 jre 添加到组合中吗?

还有一个问题:听说了这个包含的内容,是否有可能/可行(使用插件?)创建一个可以从任何地方读写(思维导图)的桌面应用程序,就像普通的 .deb 一样?(如插件:[网络,家庭]?)

非常感谢,并致以最诚挚的问候,Felix

答案1

  1. 您需要使用 JDK,而不是 JRE。这是为了包含 GUI 的 awt/viz 库依赖项
  2. 您将需要添加适当的插件以实现可视化(至少是 X11)。
  3. 您可能需要更好的包装器或改变所包含的脚本。
    1. Java 的 user.home 属性未正确设置。
    2. 字体配置数据设置不正确。

下面是我的 Maven 项目的一个例子:
https://github.com/ZenHarbinger/torgo

要从源代码构建,请打开一个问题和 LaunchPad 错误。我编写了 gradlew 插件,但我不是 gradle 用户。


编辑:添加工作文件

这是一个似乎可以工作的 snap + 包装器。
它确实很混乱,因为它将 freeplane 的内容复制了两次。
https://gist.github.com/ZenHarbinger/cf3aec2d7c6110ab0a0780b315cadc2f


编辑 2:我已向 snapcraft 中的 gradle 插件提交了更新。它将自动检测 gradlew 是否存在,并提供指定输出目录的功能。
这是带有 snapcraft 的 freeplane(如果您有更新的插件)。 https://github.com/ZenHarbinger/freeplane

相关内容