在Eclipse插件中使用Xtext代码

时间:2013-01-07 23:41:50

标签: eclipse-plugin osgi xtext

我写了两个插件:

1-基于Xtext 2.3.1的文本编辑器,包含四个项目。首先是源项目,第二个是UI,第三个是SDK,最后是测试。我知道如何将该项目导出为插件并在Eclipse 4.2(Juno)中使用它。这个编辑器可以处理'myDSL'的扩展。

2-从File->菜单触发的向导,创建一个扩展名为'myDSL'的文件。

我想将这两个插件项目合并为一个。我已阅读以下Xtext文档部分:Setup within Eclipse-Equinox (OSGi)。不幸的是,我无法让它发挥作用。首先,我不确定是否需要组合两个项目的文件,或者只是将Xtext项目添加为另一个项目的依赖项。在任何一种情况下,我应该考虑哪个Xtext项目?主项目或UI项目? (实际上,我不知道它们之间的确切区别)。其次,我不知道<MyDsl>ExecutableExtensionFactory应该替换为什么。

1 个答案:

答案 0 :(得分:2)

要结合Xtext项目和项目,您必须了解以下内容:

  • «mydsl».ui项目包含所有GUI(例如编辑器)和特定于Eclipse的(例如注册的构建器)内容;而«mydsl»项目(后来的:核心)基本上包含解析器 - 这在普通的Java应用程序(Eclipse环境之外)中是可用的。这意味着,当您想要合并Eclipse向导代码时,您对ui项目感兴趣。
  • 如果将代码从ui项目移动到向导项目,则还要更新核心项目中的mwe文件。它引用生成的ui项目,在更新语法以重新生成项目时是必需的。如果将现有代码移动到ui项目,则不需要这样做。
  • 最后,关于ExtensionFactory:这是一个Eclipse机制,用于在使用Eclipse扩展机制实例化它们时准备类。 “MyDSL”ExtensionFactory是Xtext(或Google Guice)的依赖注入魔法所必需的。这只需要使用,如果你(1)定义扩展(例如Eclipse向导)(2)想要使用依赖注入在扩展中添加Eclipse服务。
  • 如果您需要它,并且合并了您的UI和向导项目,您可以简单地重用Xtext生成的ExtensionFactory而无需进一步自定义。

但是,如果您不想显式合并代码,只将其打包在一起,您只需在生成的SDK功能中引用您的向导项目,然后只需按照您已经说明的方式导出结果。这样,您的用户可以一起使用这些项目,同时您可以单独维护代码的不同方面。

在这种情况下,如果您需要Xtext服务,请手动扩展ExtensionFactory,并替换内部的bundle引用 - 但否则您可以使用它...