如何从emf模型生成“带注释的java代码”

时间:2010-10-27 12:38:24

标签: eclipse-emf

更确切地说,我想知道,如何将注释建模到ecore模型定义中。这样生成的java代码就会包含它们。 (例如:hibernate持久性标记)

2 个答案:

答案 0 :(得分:0)

我认为你不能开箱即用。但是,您可以查看“.genmodel”文件的参数,以查看是否可以调整注释(EAnnotations)如何输出到文件。代码生成模板的问题在于它们是固定的,但也许通过genmodel中的某个选项,您可以控制注释如何写入文件。

答案 1 :(得分:0)

EMF论坛上的这篇文章讨论了如何使用自定义模板进行代码生成:https://www.eclipse.org/forums/index.php/t/131673/

简而言之,您可以动态地为代码生成提供不同的模板,从而可以插入所需的注释。在论坛帖子中,Ed Merks(EMF负责人)建议阅读以下两条信息:

以及如何使用它们的小例子:

插入内容如下:

<%@ include file="Class/getGenFeature.annotations.insert.javajetinc" fail="silent" %>

因此在您的模板文件夹下,您将创建以下文件:

<someproject>/templates/model/Class/getGenFeature.annotations.insert.java jetinc

,您在文件中放入的任何内容都将插入到getter中。可能的 您将包括这样的警卫:

<%if (isImplementation) {%>
@Something
<%}%>

请尝试遵循对缩进使用制表符的约定,因为 这些将转换为目标项目的格式设置。

一旦您可以提供自己的模板,就有两种选择:

  1. 默认将休眠标签添加到所有代码中
  2. 修改模板以读取ecore模型中的注释。

对于2,您将需要定义自己的注释源(基本上是一个URL),类似https://myproject/emf/hibernate,然后将EAnnotations添加到使用自定义URL并提供key:value设置的EClasses中(例如要添加的休眠注释)。然后,您的自定义模板可以从EClass读取批注,查询是否使用了源,然后使用提供的值添加Java批注。

该帖子还提到了Teneo项目,该项目为EMF提供了JPA支持。 (显然)目前还没有完成任何开发,但是可以成熟使用。