我有一个功能,我想更改其 ID。但是,这使得更新现有安装变得不可能,原因如下:
- 假设 1.0 版本的功能 F1 由 1.0 版本的插件 A 组成。
- 现在,我希望在 1.1 版中拥有一个功能 F2,它使用 1.1 版中的插件 A。
- 安装 F2 时出现错误 - 我已经拥有功能 F1,该功能需要版本 1.0 中的插件 A,因此,安装插件 A 1.1 将使该依赖性无效。
我正在寻找一种方法来表示 F2 取代 F1。我怎样才能做到这一点?
最佳答案
我假设您正在使用 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'/>
然后在我的 Eclipse 中,我执行了“检查更新”,它发现“g”作为之前“f”的更新并进行了升级。 (您可能需要强制重新加载存储库以获取更改,在“可用软件站点”首选项页面中执行“测试连接”应该可以做到这一点)。
不幸的是,目前无法让导出/构建过程为您更改更新元素,并且需要手动编辑。我筹集this bug .
关于eclipse - 替换 Eclipse 中现有的功能 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1067347/