2009-01-26 91 views
2

由于与外部产品兼容的原因,我需要构建一个RCP应用程序,该应用程序必须包含2个插件版本。这个插件是org.apache.lucene,它在eclipse 3.4中目前是1.9.1。我需要版本1.4.103才能与其他应用程序兼容。我应该说我的RCP应用程序最初是使用eclipse 3.2开发的,升级到3.4后出现了这个问题。Eclipse RCP:创建需要2个不同版本插件的产品的问题

在开发和测试过程中,我的应用程序工作正常。我不得不在运行配置中手动添加1.4.103插件,否则它运行正常。

现在我处于构建产品阶段,无法找到在产品向导的配置选项卡中添加Lucene插件的2个版本的方法。在运行时,一个错误表明缺少Lucene的1.4.103版本。

回答

2

考虑到,在OSGi中,捆绑包没有捆绑之间直接依赖的概念。
相反,每个捆绑包都列出了它希望由其他捆绑包通过“导入包”和“导入服务”头注册的服务和包。

另一方面,软件包列出了它计划通过“导出包”和“导出服务”导出的服务和包。因此,bundle实现之间没有硬性依赖关系。只要某些软件包提供导入的软件包,您的软件包就会很快乐。

作为例证,WTP(Web工具平台)has Duplicated javax.wsdl plugins


现在,你应该确保你已经将您3.2插件项目,子菜单中的“PDE工具”(右键点击你的项目)。

然后,您可以定义一个product for your rcp application,其中您将为运行时定义配置(target),而不是开发目标。

+0

不确定'convert plugin project'是什么意思。我在PDE工具菜单中看不到转换操作。 – paul 2009-01-26 10:37:23

+0

当我尝试配置产品运行时时,我认为我必须定义要加载的插件的版本,即1.4.103 – paul 2009-01-26 10:39:07

0

如何从其他名称的源代码编译此插件?或者为较老的插件函数编写一个包装来更新?

2

我深入研究了这个问题,涉及捆绑BIRT的产品,并因此继承了两个不同版本的javax.wsdl的需求。在阅读了很多wiki页面,bugzilla条目等之后,我发现这是PDE(插件开发环境)构建过程中的一个问题。 Eclipse 3.5现在已经纠正了这个问题。 bugzilla的条目是https://bugs.eclipse.org/bugs/show_bug.cgi?id=265438

基本上,Eclipse本身允许您指定两个版本并正确解析所有内容。但是,PDE Build(使用相同的产品文件)只能提取最新版本的插件。我们针对当前Eclipse 3.4基础的解决方案是强制性地将额外的插件复制到目标的插件文件夹中。这解决了我们暂时的问题,并且我们将来会迁移到Eclipse 3.5 RCP库,以挑选上述错误修复。