【问题标题】:How do I patch an eclipse plug-in using a fragment plugin and deploy it in my eclipse product?如何使用片段插件修补 Eclipse 插件并将其部署到我的 Eclipse 产品中?
【发布时间】:2014-12-05 01:05:26
【问题描述】:

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

Steps to use Fragments to patch a plug-in - Eclipsepedia

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

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

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

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

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

更新*:我使用 Maven Tycho - Building Eclipse plug-ins with maven 的 Tycho 插件创建我的构建。

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

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

在我的情况下,如果我想使用片段修补 org.eclipse.cdt.core 插件,我必须提供准备好的 org.eclipse.cdt.core 插件版本以及我的片段插件。

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

【问题讨论】:

  • 肯定有必要包含修改后的主机插件。因为我不使用 maven,所以我不知道你会怎么做。
  • 我认为你是对的。但是,我确实设法使用片段来修补 SWT (eclipse.org/swt/faq.php#specifyxulrunner),而无需修改主机插件。我预计这是因为 SWT 插件已经预计会被修补?

标签: maven eclipse-rcp eclipse-cdt patch osgi-fragment


【解决方案1】:

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

详情请参阅OSGi Core Release 5 Specification, 3.14 Fragment bundles, p.69 ff

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    • 2010-10-15
    • 2010-10-14
    • 2018-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多