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