Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse 使用Xtext或XTend为现有EMF模型构建代码生成器_Eclipse_Code Generation_Xtext_Xtend_Eclipse M2t Jet - Fatal编程技术网

Eclipse 使用Xtext或XTend为现有EMF模型构建代码生成器

Eclipse 使用Xtext或XTend为现有EMF模型构建代码生成器,eclipse,code-generation,xtext,xtend,eclipse-m2t-jet,Eclipse,Code Generation,Xtext,Xtend,Eclipse M2t Jet,我有一个模型转换序列,最终输出一个EMF模型,一个EMF元模型的实例(我自己定义的元模型) 我正在寻找一种从中生成代码的好方法。当然,还有XPand,我曾经在其他项目中使用过它,但我想知道XText或XTend是否是合适的替代方案(因为它的开发非常活跃) 换句话说,我有一个EMF模型,不需要编辑器(因此不需要XText),但我需要构建一个代码生成器。我可以只使用XText吗 在XPand或Acceleo上是否可取 任何建议都很好。我推荐M2T-JET。它是一种基于文本模板的转换,使用多个模板从单

我有一个模型转换序列,最终输出一个EMF模型,一个EMF元模型的实例(我自己定义的元模型)

我正在寻找一种从中生成代码的好方法。当然,还有XPand,我曾经在其他项目中使用过它,但我想知道XText或XTend是否是合适的替代方案(因为它的开发非常活跃)

换句话说,我有一个EMF模型,不需要编辑器(因此不需要XText),但我需要构建一个代码生成器。我可以只使用XText吗

在XPand或Acceleo上是否可取


任何建议都很好。

我推荐M2T-JET。它是一种基于文本模板的转换,使用多个模板从单个输入模型生成项目、文件夹和文件。模型可以是EMF,模板允许您在模型中导航和迭代,以生成您心目中的Eclipse资源

我试图在这些工具之间做一个公平的比较,但这真的很难

Xtext与代码生成无关——它用于创建编辑器和解析器

Xtend2被设计为Xpand的继承者,具有类似的语法-但是,它不是专门针对代码生成而定制的,而是一种通用语言,可以很好地用于代码生成。其他生成引擎之间的主要区别在于,您在源代码级别工作(基本上,Xtend2转换为Java),并且您必须提供自己的引擎来驱动生成—当然,出于这个原因,可以使用建模工作流引擎—就像Xpand一样

Acceleo更适合于简单的代码生成。它的语法基于用于代码生成的OMG规范,并提供了用于开发代码生成的全功能IDE。但是,如果在代码生成过程中需要复杂的控制结构,它可能不是最佳解决方案

关于M2T-JET,正如Chris所建议的,我会投反对票,除了非常特殊的需要。它的开发支持要弱得多(例如,它的编辑器),并且更多地基于为输出使用单个模板的想法,而不是基于更高级别、基于规则的Xpand/Xtend/Acceleo方法。这会在代码生成过程中获得更好的性能,但通常会导致更难理解的模板。忽略这一段,因为它太消极了


总之,如果您只使用EMF模型,那么Acceleo和Xtend都是代码生成的不错选择,您应该根据您(或您的团队)的专业知识和更具体的需求在它们之间进行选择。如果您需要同时支持EMF模型和其他数据源,那么Acceleo不是最佳选择;但是,JET和Xtend都不是基于您的输入是EMF模型这一事实构建的,而是提供了调用任何可用Java代码的简单方法。

好的,您是对的,我很抱歉。我不想对杰特那么消极。它的功能就在那里,我只觉得使用起来更麻烦。我将该段落标记为已删除。将尝试xtend,正如sven efftinge刚刚在Twitter上向我建议的那样。我知道我需要做一些工作来获取模型作为输入,但在总体方案中,这可能不是很多工作。我在某个地方读到,XTend的执行速度比XPand快得多well@ChrisGerken我使用Acceleo生成Swing编辑器(甚至CRUD)、ESB中介和Spring/JPA/Flex应用程序。JET比Acceleo/XTend更复杂的事实与JET尽可能完整的事实并不矛盾。这只是证明你不了解JET。请不要评论你不了解的技术,尤其是当你有如此明显的偏见时。