我正在开发基于Eclipse / CDT的自定义IDE。到目前为止,这只是一个基于Eclipse / CDT和定制插件的产品。我将其导出为产品和更新网站,这很有效。
但现在我需要对其中一个CDT插件进行一些小改动。为此,我从eclipse存储库导入(仅)该插件并对其进行了修改。现在,在我的工作区中加载此插件时,此版本似乎优先于基线,但包含此插件的基线功能仍需要此插件的硬编码版本。如果我将硬编码版本号添加到此插件的副本中,然后我可以导出产品。导出的版本包含更改,它工作正常。但这显然是错误的事情(因为补丁插件现在构成原始插件)。我想我可以将更多的CDT导入我的工作区并导出所有这些,并且它可以在不修改版本号的情况下工作。 缺点是用户可能不能使用默认的eclipse更新站点来安装任何东西,因为他们可能会覆盖修补版本的插件以及以后发布的未修补的插件?
我已经阅读了关于功能补丁的明显博客帖子(缺少文档的功能,我必须说:))。我为此功能添加了功能补丁,然后将我修改过的插件添加到此功能补丁所需的插件列表中。 我可以导出补丁功能(插件版本默认使用插件中的something.qualifier,以及#34;从插件和片段清单中复制"在功能补丁插件中)。
但是我仍然无法导出我的产品。当我尝试导出时,它仍然需要原始版本的插件,它现在无法找到。
所以,最让我烦恼的问题是:什么是发布Eclipse产品的正确方法,只需稍微更改一下" base"插件仍然允许用户使用通用Eclipse(eclipse.org)更新站点(例如,安装不同的产品)?
或者至少是什么是发布带有修改后的基础插件的产品的最佳方式?
答案 0 :(得分:1)
如果更改是一个班轮,那么您可以考虑使用OSGi adapter hooks。在这样的钩子中,您可以通过字节码修改库(例如ASM)执行所需的修改。这不是微不足道的,但是当您修改的代码在Eclipse版本中保持稳定时,会给出相当好的结果。用户可能会升级Eclipse,并且新的插件将被覆盖而没有任何问题。
如果您不想使用字节,尽管最好的方法是将包含修改过的插件的功能提取到您的源中。但是,升级问题并不容易解决。您可以通过修改已修改的插件版本(以及禁用Eclipse更新站点)来阻止升级,也可以允许覆盖您的更改。