我有一个基于 Eclipse 的 OSGi 应用程序,其中包含按功能组织的包。我使用产品定义来启动应用程序。在这个定义中,我还可以为我的包设置启动级别。
现在想象一下,我想向正在运行的应用程序添加一个功能。p2.inf 文件是在此功能中指定捆绑包启动级别的唯一方法吗?重新定义和重新启动产品听起来不像是最佳解决方案,因为它并不是真正动态的。
我不知道有任何真正的工具支持在功能级别上设置捆绑包的启动级别。您唯一的选择是使用 p2.inf 手动破解。
我认为仅对产品真正支持设置启动级别的原因是 p2 无法处理多次指定启动级别的情况。如果鼓励在功能级别上设置启动级别,这很容易发生。
因此,您可以在功能级别上完成这项工作,但前提是您知道自己在做什么。
我相信我有同样的问题:我有一个功能,它既是打包产品的一部分,又出现在要安装到 Eclipse IDE 中的更新站点上。而且我还想为一些插件设置启动级别,以确保非常早的启动。
p2.inf
我已经用一个包含以下内容的文件克服了这个问题:
instructions.configure=setStartLevel(startLevel:1);markStarted(started: true);
instructions.unconfigure=setStartLevel(startLevel:-1);markStarted(started: false);
(我认为我不需要在产品定义中指定起始级别,尽管我还没有尝试删除它。)
我最初使用的是 start-level 2,但至少对于 Juno 包来说,有一些插件是从 level 1 开始的,所以我现在也使用 level 1。