如何在xtext项目之外使用xtext推断的JVM模型?

如何在xtext项目之外使用xtext推断的JVM模型?,xtext,Xtext,在Xtext文档的推断JVM模型部分(http://www.eclipse.org/Xtext/documentation.html#_17)它首先说: “在许多情况下,您希望您的DSL概念可以作为Java元素使用。例如,一个实体将成为一个Java类,并且应该可以作为Java类使用” 在上面的示例中,如何在xbase的外部使用生成的实体类,即在与xtext不同的项目中的真实Java代码中使用 我本质上要问的是,在一个完全不同的项目中,由model Inferrer创建的Java类是否可以实际用作

在Xtext文档的推断JVM模型部分(http://www.eclipse.org/Xtext/documentation.html#_17)它首先说: “在许多情况下,您希望您的DSL概念可以作为Java元素使用。例如,一个实体将成为一个Java类,并且应该可以作为Java类使用”

在上面的示例中,如何在xbase的外部使用生成的实体类,即在与xtext不同的项目中的真实Java代码中使用

我本质上要问的是,在一个完全不同的项目中,由model Inferrer创建的Java类是否可以实际用作真正的Java类,可以调用它们的方法并从Java代码中访问字段,如果是这样,如何做到这一点


浏览文档让我担心生成的“Java类”只是Xbase类型,只是xtext上下文中的引用,因此不是真正的Java类…

Xbase编译器可以将所有Xbase表达式编译成普通Java代码,在Java代码可用的任何地方都可以使用

如果您将自己的元素添加到语言中,则必须扩展生成器以同时支持这些元素-因此,您需要定义自己的JVMModelInferrer

然后,基本Xtext编译器执行JVMModelInferrer,计算可能(也可能不)包含Xbase表达式的JVM模型;然后,可以将这个JVM模型生成为Java可编译(因此Java可重用)代码


如果您想测试此功能,只需生成Xtext域模型示例(可从Xtext/Examples类别中的New…wizards获得),并评估结果:编辑域模型时,Xtext会自动生成可用的Java代码(如果设置了所需的依赖项)。

感谢您的回复,“如果设置了所需的依赖项,它会自动生成可用的java代码”,这是什么意思?哪些依赖项?您是否建议它在不使用generator.xtend的情况下生成代码(但仅使用JVMModelInferrer),如果是,将在何处生成此代码?您必须进行最低限度的设置,因为Xbase只能用作表达式语言,因此不设置类。您需要做的唯一一件事是确定在生成的代码中表示类或方法的模型类是什么-方法体可以从Xbase表达式创建。有关详细信息,请参阅。非常感谢您的回答。虽然我见过这种方法,但我不知道它也在生成src gen文件夹的代码。所以我需要做的就是从这个文件夹加载类。