【发布时间】:2011-05-01 07:12:42
【问题描述】:
更准确地说,我想知道如何将注释建模到 ecore 模型定义中。这样生成的 java 代码就会包含它们。 (例如:hibernate 持久化标签)
【问题讨论】:
标签: eclipse-emf
更准确地说,我想知道如何将注释建模到 ecore 模型定义中。这样生成的 java 代码就会包含它们。 (例如:hibernate 持久化标签)
【问题讨论】:
标签: eclipse-emf
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
<%}%>
尽量遵循使用制表符进行缩进的约定,因为 这些将被转换为目标项目的格式偏好。
一旦您可以提供自己的模板,您就有两种选择:
对于 2,您需要定义自己的注释源(基本上是一个 url),例如 https://myproject/emf/hibernate,然后将 EAnnotations 添加到使用您的自定义 url 并提供 key:value 设置的 EClasses(例如休眠注释到添加)。然后,您的自定义模板可以从 EClass 中读取注释,查询是否使用了您的源,然后使用提供的值添加 Java 注释。
该帖子还提到了Teneo 项目,该项目为 EMF 提供 JPA 支持。最近没有进行任何开发(显然),但它可以足够成熟以使用。
【讨论】:
我认为你不能开箱即用。但是,您可以查看“.genmodel”文件的参数,看看是否可以调整注释 (EAnnotations) 输出到文件的方式。代码生成模板的问题在于它们是固定的,但也许通过 genmodel 中的某些选项,您可以控制如何将注释写入文件。
【讨论】: