【问题标题】:In Equinox is it possible to for one feature/bundle to obsolete another?在 Equinox 中,是否有可能让一个功能/捆绑包过时另一个功能/捆绑包?
【发布时间】:2011-03-06 06:25:01
【问题描述】:

我有一个基于 Eclipse 的项目(Eclipse 的 Scala IDE),该项目最近搬到了新家。我想更改各种功能 ID、Bundle-SymbolicNames 等以反映这一举动(即,使它们都具有 org.scala-ide 前缀)并重新启动版本编号(以前它与相应的 Scala 编译器版本相关联我想解耦这些)。

但我希望 p2 能够认识到这一点,例如。 org.scala-ide.sdt.feature v. 1.0.0 是 ch.epfl.lamp.sdt v. 2.7.7 的升级。使用 RPM 可以使用 obsoletes directive 来执行此操作 ... p2 是否有等效项?

【问题讨论】:

    标签: eclipse equinox p2


    【解决方案1】:

    我相信这是可能的,但目前还没有相应的工具(或文档)。

    每个IU 都包含一个更新描述符 (javadoc),它指示它是哪个 IU 的更新。现有工具始终将其设置为同一捆绑包的先前版本。在 content.xml 中它看起来像这样:

    <unit id='org.eclipse.equinox.launcher' version='1.1.0.v20100507'>
       <update id='org.eclipse.equinox.launcher' range='[0.0.0,1.1.0.v20100507)' severity='0'/>
       ...
    

    你可以设置这个

    1. 等待bug 282545 修复。
    2. 手动编辑 content.xml(可能是 xslt 转换)
    3. 扩展p2 publisher 以生成不同的描述符。您可能希望覆盖 BundlesAction 以使用您自己的 BundlesAction#createBundleIU 版本。

    【讨论】:

    • 不幸的是,这似乎不起作用,至少在所有情况下都不起作用。在安装/升级过程中,更新元素似乎没有在适当的时间进行测试,结果旧功能和新功能都保留为配置计划的一部分(我们希望选择旧功能进行删除)。最后,我创建了旧功能的虚拟实现,这些功能可选地包含在新功能中。这允许新功能更新旧功能,并有可能在以后完全消除它们。
    猜你喜欢
    • 1970-01-01
    • 2012-12-04
    • 2012-03-30
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多