我正在尝试更改 Java snap 的源。以下是我所做的:
下载示例项目。
svn export https://github.com/snapcore/snapcraft/trunk/demos/java-hello-world
构建名为 java-hello-world 的 snap。
cd java-hello-world snapcraft
安装卡扣。
sudo snap install java-hello-world_0_amd64.snap --dangerous
运行快照。
java-hello-world.hello
输出
Hello World
符合预期。
现在我想更改 snap 以便打印“Hello Snap”而不是“Hello World”。我这样做了:
编辑
java-hello-world/snap/snapcraft.yaml
。将等级改为devel
,限制改为devmode
。编辑
java-hello-world/src/oata/HelloWorld.java
。将第 7 行更改为System.out.println("Hello Snap");
。迭代快照。
snapcraft prime sudo snap try --devmode prime/
输出是
Hello World
。我希望Hello Snap
在这里得到输出。
我做错了什么:构建过程中有两件事对我来说似乎很可疑。
运行 snapcraft prime 时显示:
Skipping pull local (already ran) Skipping build local (already ran) Skipping stage local (already ran) Skipping prime local (already ran) Skipping pull wrapper (already ran) Skipping build wrapper (already ran) Skipping stage wrapper (already ran) Skipping prime wrapper (already ran)
我猜跳过所有这些步骤还包括跳过读取和编译文件
java-hello-world/src/oata/HelloWorld.java
。这就是为什么编辑文件后输出仍然相同。我怎么能不跳过这个步骤呢?教程说:注意:snapcraft 的不同步骤包括:pull(下载所有部分的源代码)、build、stage(整合所有部分的安装文件)、prime(提取所需文件)、snap(从 prime/ 目录中创建 snap)。每个步骤都依赖于前一个步骤的完成”。
我尝试
snapcraft pull
用 代替prime
,但结果是一样的。snapcraft
第一次运行时,ant
给出警告。[javac] /home/username/Java/java-hello-world/parts/local/build/build.xml:19: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
我不知道这是什么
defaulting to build.sysclasspath=last
意思。所以这可能是问题所在。“设置为 false 以进行可重复构建”应该没问题,因为这就是这个答案表明。
更改快照后,如何刷新快照源?提前致谢。
答案1
清理先前的构建
snapcraft clean
但是当你有大项目时你可能只需要那部分
snapcraft clean local
再次重建
snapcraft