Eclipse plugin 在Eclipse插件中使用Xtext代码

Eclipse plugin 在Eclipse插件中使用Xtext代码,eclipse-plugin,osgi,xtext,Eclipse Plugin,Osgi,Xtext,我编写了两个插件: 1-基于Xtext 2.3.1的文本编辑器,包括四个项目。第一个是源项目,第二个是UI,第三个是SDK,最后一个是测试。我知道如何将这个项目导出为插件,并在Eclipse4.2(Juno)中使用它。此编辑器处理“myDSL”的扩展 2-从文件->菜单触发的向导,创建扩展名为“myDSL”的文件 我想把这两个插件项目合并成一个。我已经阅读了Xtext文档的以下部分:。不幸的是,我无法让它工作。首先,我不确定是否需要合并两个项目的文件,或者只是添加Xtext项目作为另一个项目的依

我编写了两个插件:

1-基于Xtext 2.3.1的文本编辑器,包括四个项目。第一个是源项目,第二个是UI,第三个是SDK,最后一个是测试。我知道如何将这个项目导出为插件,并在Eclipse4.2(Juno)中使用它。此编辑器处理“myDSL”的扩展

2-从文件->菜单触发的向导,创建扩展名为“myDSL”的文件


我想把这两个插件项目合并成一个。我已经阅读了Xtext文档的以下部分:。不幸的是,我无法让它工作。首先,我不确定是否需要合并两个项目的文件,或者只是添加Xtext项目作为另一个项目的依赖项。在这两种情况下,我应该考虑XWORD项目中的哪一个?主项目还是UI项目?(实际上,我不知道它们之间的确切区别)。其次,我不知道应该用什么替换
ExecutableExtensionFactory

要将Xtext项目和您的项目结合起来,您必须知道以下几点:

  • «mydsl».ui项目包含所有GUI(如编辑器)和特定于Eclipse(如注册构建器)的内容;虽然«mydsl»项目(稍后:core)基本上包含解析器,但它可以在普通Java应用程序中使用(在Eclipse环境之外)。这意味着,当您想要合并Eclipse向导代码时,您会对ui项目感兴趣
  • 如果将代码从ui项目移动到向导项目中,则还要更新核心项目中的mwe文件。它引用生成的ui项目,并且在更新语法以重新生成项目时是必需的。如果将现有代码移动到ui项目,则不需要这样做
  • 最后,关于ExtensionFactory:这是一种Eclipse机制,用于在使用Eclipse扩展机制实例化类时准备类。需要«MyDSL»扩展工厂才能使Xtext(或googleguice)的依赖项注入魔法发挥作用。仅当您(1)定义扩展(例如Eclipse向导)和(2)希望使用依赖项注入在扩展中添加Eclipse服务时,才需要使用此选项
  • 如果您需要它,并且合并了ui和向导项目,您可以简单地重用Xtext生成的ExtensionFactory,而无需进一步定制
但是,如果您不想显式合并代码,只需将其打包在一起,您可以简单地在生成的SDK功能中引用您的向导项目,并简单地导出您已经声明知道的结果。这样,用户可以一起使用项目,而您可以分别维护代码的不同方面

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