编辑 Java snap

编辑 Java snap

我正在尝试更改 Java snap 的源。以下是我所做的:

  1. 下载示例项目。

    svn export https://github.com/snapcore/snapcraft/trunk/demos/java-hello-world
    
  2. 构建名为 java-hello-world 的 snap。

    cd java-hello-world  
    snapcraft
    
  3. 安装卡扣。

    sudo snap install java-hello-world_0_amd64.snap --dangerous
    
  4. 运行快照。

    java-hello-world.hello
    

    输出Hello World符合预期。

现在我想更改 snap 以便打印“Hello Snap”而不是“Hello World”。我这样做了:

  1. 编辑java-hello-world/snap/snapcraft.yaml。将等级改为devel,限制改为devmode

  2. 编辑java-hello-world/src/oata/HelloWorld.java。将第 7 行更改为System.out.println("Hello Snap");

  3. 迭代快照。

    snapcraft prime
    sudo snap try --devmode prime/
    

    输出是Hello World。我希望Hello Snap在这里得到输出。

我做错了什么:构建过程中有两件事对我来说似乎很可疑。

  1. 运行 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,但结果是一样的。

  2. 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

  1. 清理先前的构建

    snapcraft clean
    

    但是当你有大项目时你可能只需要那部分

    snapcraft clean local
    
  2. 再次重建

    snapcraft
    

相关内容