代码之家  ›  专栏  ›  技术社区  ›  zvikico

在Eclipse中替换现有的功能ID

  •  2
  • zvikico  · 技术社区  · 15 年前

    我有一个特性,我想更改它的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。我该怎么做?

    1 回复  |  直到 15 年前
        1
  •  3
  •   Andrew Niefer    15 年前

    我假设你使用的是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 .

    推荐文章