在Equinox中,一个功能/捆绑可能会淘汰另一个功能/捆绑吗?

时间:2010-06-21 10:54:29

标签: eclipse equinox p2

我有一个基于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是否等效?

1 个答案:

答案 0 :(得分:2)

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

每个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版本。