maven - 如何使用片段插件修补 eclipse 插件并将其部署到我的 eclipse 产品中?

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

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

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

主机插件的补丁涉及用更新的类文件替换单个类文件。但是我在修改主机包 list 设置步骤 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 .

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

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

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

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

最佳答案

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

另见 OSGi Core Release 5 Specification, 3.14 Fragment bundles, p.69 ff详情。

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

关于maven - 如何使用片段插件修补 eclipse 插件并将其部署到我的 eclipse 产品中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26289631/

相关文章:

maven - 使用 Cobertura 和 Jacoco 运行代码覆盖率

java - Maven Surefire 适当使用Exclude

java - 将值从 Mojo 传递到 pom

eclipse-plugin - 在自定义悬停内显示链接(Eclipse 插件开发)

eclipse - 恢复 Eclipse 工作区

c++ - 在 C/C++ 源代码中包含 Git 提交哈希和/或分支名称

java - Eclipse、Maven 和 JMH : No matching benchmarks

java - 如何以编程方式自定义 Eclipse 透视图?

c - GDB 停留在 “Configuring GDB Aborting configuring GDB”

c++ - 我可以使用 Eclipse CDT 调试预构建的 C++ 可执行文件吗?