设置动态Eclipse功能的起始级别:p2.inf的替代方案?

时间:2013-07-10 07:36:07

标签: eclipse osgi p2

我有一个基于Eclipse的OSGi应用程序,其中包含按功能组织的软件包。我使用产品定义来启动应用程序。在这个定义中,我还可以为我的包设置启动级别。

现在想象一下,我想为正在运行的应用程序添加一项功能。 p2.inf文件是指定此功能中捆绑包的起始级别的唯一方法吗?重新定义和重新启动产品听起来不是最佳解决方案,因为它不是真正的动态。

2 个答案:

答案 0 :(得分:1)

我不知道在功能级别上为bundle设置启动级别的任何实际工具支持。你唯一的选择是使用p2.inf进行手动黑客攻击。

我认为设置启动级别仅对产品真正支持的原因是p2无法处理多次指定启动级别的情况。如果鼓励在功能级别设置启动级别,则很容易发生这种情况。

因此,您可以在功能级别上进行此操作,但前提是您知道自己的操作。

答案 1 :(得分:1)

我有同样的问题:我有一个功能,它既是打包产品的一部分,又存在于更新站点上,可以安装到Eclipse IDE中。我还想设置一些插件的起始级别,以确保早期启动。

我已使用包含以下内容的p2.inf文件克服了此问题:

instructions.configure=setStartLevel(startLevel:1);markStarted(started: true);
instructions.unconfigure=setStartLevel(startLevel:-1);markStarted(started: false);

(我认为我不再需要在产品定义中指定起始级别,但我还没有尝试删除它。)

我最初使用的是start-level 2,但至少对于Juno包,有一些插件从1级开始,所以我现在也使用1级。