【问题标题】:How to generate 'java code with annotations' from emf model如何从 emf 模型生成“带注释的 java 代码”
【发布时间】:2011-05-01 07:12:42
【问题描述】:

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

【问题讨论】:

    标签: eclipse-emf


    【解决方案1】:

    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 支持。最近没有进行任何开发(显然),但它可以足够成熟以使用。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 嗯,您是建议我编写自己的自定义代码生成器还是提供自己的代码生成模板?你能指出我在这方面的任何资源吗?我发现 CDO 和 Teneo 尝试解决相同的问题,但找不到易于理解的教程。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-21
      相关资源
      最近更新 更多