1

我写了两个插件:

1- 基于 Xtext 2.3.1 的文本编辑器,由四个项目组成。第一个是源项目,第二个是UI,第三个是SDK,最后是测试。我知道如何将此项目导出为插件并在 Eclipse 4.2 (Juno) 中使用它。该编辑器适用于“myDSL”的扩展。

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

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

4

1 回答 1

2

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

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

但是,如果您不想显式合并代码,只需将其打包在一起,您可以简单地在生成的 SDK 功能中引用您的向导项目,并简单地导出您已经声明的结果。这样,您的用户可以一起使用项目,而您可以分别维护代码的不同方面。

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

于 2013-01-10T20:07:47.687 回答