5

我正在尝试使用片段插件将补丁应用于现有插件,如下所述:

使用 Fragments 修补插件的步骤 - Eclipsepedia

主机插件的补丁涉及用更新的类文件替换单个类文件。但是我在修改主机包清单设置步骤 5) 到 11)部分中没有得到这个概念。在这里它指导您修改主机插件。我认为整个想法是您不必触摸主机插件 - 它是您部署的添加补丁的片段?

我的产品由 eclipse 平台和 org.eclipse.cdt 功能以及我自己的使用 cdt 的插件组成。这是我要修补的 org.eclipse.cdt.core 插件。

我已经按照 eclipse wiki 中的步骤创建了我的片段项目,其中包含我想在主机插件中修补的包和类。我已经在 Maven 中构建了它,当我运行这个产品时,我看到我的片段插件处于活动状态,但它包含的类没有被调用;原来的主机插件类是。

我猜问题是修改后的主机插件不在我部署的产品中。片段指南中没有包含有关部署主机插件的建议的任何步骤,我不确定如何/为什么需要它。

(我过去曾成功使用过功能补丁来处理这类事情,但只使用 PDE 创建 - 我无法在 maven 下构建我的功能补丁 - 这就是为什么我正在探索使用片段来查看如果我能让他们在 Maven 下构建。)

更新*:我使用 Maven Tycho 的 Tycho 插件创建我的构建- 使用 maven 构建 Eclipse 插件

感谢您链接到“OSGi Core Release 5 Specification”。那是有用的阅读。

因此,如果我的理解是正确的,如果主机插件已经“准备好”用片段修补,片段只能将其类覆盖在主机插件上。这涉及修改主机插件的清单。具体来说: 1. 添加一个新库并将其移至“。”上方。包裹。从构建属性中删除此库;该库只是一个参考,不应由主机插件创建。+ 添加 Eclipse-ExtensibleAPI: true 到 manifest.mf 文件 + 增加版本号。

就我而言,似乎如果我想使用片段修补 org.eclipse.cdt.core 插件,我必须提供准备好的 org.eclipse.cdt.core 插件版本以及我的片段插件。

*:不确定回答礼仪;没有足够的声誉做很多事情。评论框只接受少量字符。

4

1 回答 1

0

在OSGi 片段捆绑级别上有一个更直观的解释(至少对我而言),它基本上显示了 Eclipse 中的 GUI 操作所实现的结果。根据这一点,Bundle-ClassPath如果您想替换或更好地:覆盖现有类,则必须调整主机清单中的内容。

另请参阅OSGi Core Release 5 Specification, 3.14 Fragment bundles, p.69 ff了解详细信息。

您使用Maven Bundle Plugin创建了您的捆绑包,是吗?

于 2014-10-10T23:03:01.410 回答