【发布时间】: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