在Eclipse中使用不同版本加载相同的插件两次

时间:2012-02-21 19:29:51

标签: java eclipse osgi eclipse-emf mde

我有两个不同版本的EMF插件,可以加载某个.xmi。后一版本已更改,因此前一版本的xmi不兼容。我想要做的是使用第一个插件加载xmi,然后使用较新的插件以编程方式构建模型,从而迁移旧模型。除了EMF模型中的一些变化外,它们是相同的。

如何加载这些插件?可能吗?有更好的策略吗?

2 个答案:

答案 0 :(得分:2)

我建议更改旧版本的ID(可能还有EMF包URI),这样你就可以同时拥有这两个代码和模型。

由于您需要在同一个插件(迁移器)中处理旧类和新类,因此无法同时处理这两个类。

但是,您应该查看dynamic EMF technology,您可以在没有生成包的情况下打开旧模型(另一方面,您必须使用反射API)。使用此方法,您可以编写转换器,使用EMF反射API打开旧模型,并手动将其转换为新的模型版本。

答案 1 :(得分:1)

很抱歉,但这是不可能的,因为这些插件是单例。并且您无法在迁移过程中切换插件,因为Java基类妨碍了您。

一种可能的解决方案是使用EDapt技术。此技术允许您在加载模型时自动迁移模型。我在两个不同的项目中使用了COPE(EDapt的前身)并取得了巨大的成功。