eclipse - 替换 Eclipse 中现有的功能 ID

标签 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 将使该依赖性无效。

我正在寻找一种方法来表示 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/

相关文章:

android - 为什么 Eclipse 的 Android 设备选择器不显示我的 Android 设备?

eclipse-plugin - 适用于 Eclipse 的 Coverity Prevent 插件

android - 将 WTP 插件安装到 ADT eclipse 时出错

eclipse - 运行 Eclipse 插件/更新镜像

javascript - 使用 p2 旋转约束连接 2 个移相器 Sprite ,无需施加力

pom.xml - 在哪里可以找到第一个 tycho pom 功能项目来构建 P2 存储库?

android - 在 .apk 上包含 jar 文件

java - 工作空间中未安装与此环境严格兼容的 JRE

java - 如何使用p2-maven-plugin高效管理第三方依赖?

eclipse-plugin - 从 eclipse 访问 Hadoop 集群