替换Eclipse中的现有功能ID

时间:2009-07-01 05:05:24

标签: eclipse eclipse-plugin p2

我有一个功能,我想更改其ID。但是,这使得无法更新现有安装,原因如下:

  1. 假设版本1.0的功能F1包含版本1.0的插件A.
  2. 现在,我希望在版本1.1上使用功能F2,它使用版本1.1的插件A.
  3. 安装F2后我得到一个错误 - 我已经有了功能F1,它需要1.0版本的插件A,因此,安装插件A 1.1将使该依赖性无效。
  4. 我正在寻找一种方法来表示F2取代了F1。我怎么能这样做?

1 个答案:

答案 0 :(得分:3)

我假设你正在使用p2。

使用p2 metadata 导出/构建功能时,生成的content.xml(.jar)包含以下内容:

<unit id='f.feature.group' version='1.0.0' singleton='false'>
  <update id='f.feature.group' range='[0.0.0,1.0.0)' severity='0'/>
  ...
</unit>

<update>元素指定此更新的功能的先前版本。现有的元数据生成工具如上所示设置了这个。

我创建了一个功能'f',其中包含插件“A 1.0.0”并使用元数据导出并将该功能安装到我的eclipse中。然后我创建了一个功能'g',其中包含插件“A 2.0.0”。我将它再次导出到同一个存储库。然后我去手动编辑了content.xml文件,并更改了:

<unit id='g.feature.group' version='1.0.0.200907061120' singleton='false'>
  <update id='g.feature.group' range='[0.0.0,1.0.0.200907061120)' severity='0'/>

<unit id='g.feature.group' version='1.0.0.200907061120' singleton='false'>
  <update id='f.feature.group' range='[0.0.0,1.0.0.200907061120)' severity='0'/>

然后在我的日食中,我做了一个“检查更新”,它发现'g'是对前一个'f'的更新并进行了升级。 (您可能需要强制重新加载存储库以获取更改,在“可用软件站点”首选项页面中执行“测试连接”应该这样做。)

不幸的是,目前无法让导出/构建过程为您更改更新元素,并且需要进行手动编辑。我提出了this bug