我正在尝试更改 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
符合预期。
现在我想更改快照,使其打印“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
意思。所以这可能是问题所在。“为可重复构建设置为假”应该没问题,因为这就是这个答案所暗示的。
更改快照后如何刷新快照源?提前谢谢了。
清理以前的构建
但是当你有大项目时,你可能只想要那部分
再次重建