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

2023-12-27

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


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

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

  • http://wiki.eclipse.org/index.php/EMF-FAQ#What_are_Dynamic_Templates.3F http://wiki.eclipse.org/index.php/EMF-FAQ#What_are_Dynamic_Templates.3F
  • http://wiki.eclipse.org/index.php/EMF-FAQ#How_do_I_use_Dynamic_Templates.3F http://wiki.eclipse.org/index.php/EMF-FAQ#How_do_I_use_Dynamic_Templates.3F

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

插入内容如下所示:

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

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

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

并且您在文件中放入的任何内容都将被插入到 getter 中。可能 你会包括这样的守卫:

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

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

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

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

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

帖子还提到了Teneo https://wiki.eclipse.org/Teneo项目,为 EMF 提供 JPA 支持。 (显然)最近没有进行任何开发,但它已经足够成熟可以使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • Google 字体无法在 Safari 上运行

    我正在努力让我的网站在 Safari 和 Chrome 下看起来相同 在 Chrome 中 它看起来正是我想要的样子 主要问题是 Google Font 似乎无法在 Safari 下加载 因为我使用的是 Google Font 网站上给出的
  • 如何在 JavaFx 中设置 svgPath 的大小

    我有一个包含 ListCells 的 ListView 其中包含由 SvgPath 定义的图标 private class CustomCell extends ListCell
  • Perl 中的配置文件处理

    CPAN 上的 Config 命名空间中有很多模块 但它们都受到某种方式的限制 我目前正在使用配置 标准 http search cpan org perldoc Config Std 这在大多数情况下都很好 但是它使某些事情变得困难 超过
  • Laravel 5.6 存储链接已存在,但尝试从公共文件夹获取文件时出现 404 错误

    我使用以下命令创建了一个符号链接 php artisan storage link 然后我创建了一个文件storage app public 根据文档 我可以通过以下方式获取该文件的链接 asset storage file txt htm
  • 如何使用lxml创建文本节点?

    我使用 lxml 和 python 来操作 xml 文件 我想创建一个最好没有标签的文本节点 而不是创建一个新的Element然后向其附加文本 我怎样才能做到这一点 我可以在中找到与此等效的内容xml dom minidompython 的
  • Proguard 和 R8 有什么区别?

    新版本的 Android Studio 3 4 刚刚发布 默认支持 R8 而不是 Proguard 有人可以解释一下两者之间的主要区别以及使用 R8 的任何明显好处吗 Android 构建过程的历史不断变化 开发人员不断尝试使其在构建时间和
  • 如何强制 iOS 立即更改背景颜色?

    有什么方法可以立即更改窗口的背景颜色吗 我需要一个闪烁的背景 即红 绿以一秒的间隔闪烁 正如我所见 背景颜色不会立即改变 而是仅在功能保留时才改变 有没有办法强制系统立即更改它并重绘窗口背景 void viewDidLoad super v
  • @将较少文件导入到有限范围内

    我想从另一个 less 文件导入所有样式 但范围有限 我正在尝试这个 我的网站 less wrapper class import path to styles less 但这根本不起作用 我使用基于浏览器的 less js 选项 并且可以
  • php 全局修剪 $_post

    你能修剪所有 POST 变量吗 因为我现在有一个很长的清单来修剪每个变量 看起来很不专业 我认为修剪 POST 也许会起作用 但没有 你可以这样做array map http php net array map POST array map
  • 如何修复 Android Studio 中的 VectorDrawableCompat 配置错误?

    我在 Android studio 中创建了一个项目 即使不修改项目中的任何单个字符 我也无法运行它 它给出以下错误 java lang RuntimeException 无法启动活动 组件信息 com kk myapplication c
  • 交集完成后,数组中的顺序是否保留?

    当我对两个数组进行交集时 是否可以保证结果顺序基于第一个数组的顺序 例如 如果我有 a 1 2 3 b 3 2 1 could a b return 3 2 1 代替 1 2 3 这是我所期望的 我在 RDoc 或 Pickaxe 的 Ar
  • 如何以编程方式调用 maven-resources-plugin

    我正在编写一个自定义 Maven 插件 该插件的部分工作是过滤复制一些资源 我写的代码如下所示 CopyResourcesMojo rm new CopyResourcesMojo rm setOutputDirectory outputD
  • 如何查找 Linux 上 Java Desktop API 需要哪些库?

    我正在尝试找到一种方法来确定 Java 需要哪些库才能使 Desktop API 工作 特别是BROWSE功能 我读了一些指南 错误报告和解决方法 但它们都不起作用 我可以通过安装使其在 Debian 上运行libgnome2 0 and

随机推荐

  • 将 C++ LPCWSTR 打印到文件

    我正在尝试将 LPCWSTR 值打印到文件中 但它只打印地址 而不打印值 我尝试过取消引用变量 使用 来获取 value 但这也不起作用 如何打印该值 void dump LPCWSTR text ofstream myfile C myf
  • 用于自定义图例的 Angular ngx-charts 选项?

    我目前正在使用 Angular2 的 ngx charts 我想自定义一些图例 例如将图例放在图表下方 或重命名图例字段 或使图例更宽 部分文本被截断 等 有什么好的选项来自定义图例吗 或者这通常是不可能的 或者最好的方法是什么 目前 我的
  • 添加 FFmpegMediaMetadataRetriever 后 Apk 大小增加

    我将依赖项 com github wseemann FFmpegMediaMetadataRetriever 1 0 3 添加到我的Android Studio中的应用程序 build gradle 中 apk从2 MB跳到16 MB 我只
  • 嘿,如何从 laravel 中的 klaviyo php-sdk 收集 laravel 中的短信同意

    嘿伙计们 有谁知道如何在 klaviyo 中添加短信内容吗 laravel 中的这个包 https github com klaviyo php klaviyo or just add a property to someone 基本上 我
  • 什么时候应该在 Material-UI 中使用 Typography?

    我正在使用 Material UI 但我有点困惑 有这个组件Typography https material ui com components typography typography但我真的不明白何时使用它以及它的目的是什么 什么时
  • 禁用 ScrollView 中包含的 ListView 的滚动

    我想为我的用户显示个人资料屏幕 它必须具有三个视图 2Buttons and a ImageView and a ListView显示该用户制作的内容 但是 我不想要ListView滚动 相反 我希望它尽可能大 并将我所有的观点放在一个Sc
  • 大写 utf8 字符与其小写变体的字节数始终相同吗?

    显然对于拉丁字母来说也是如此 但我是从概念意义上跨语言和 Unicode 规范来问这个问题的 实际上 这是为了比较两个字符串而出现的 如果您已经知道它们在所有语言中的字节数不同 您是否可以认为足以保证它们不是同一字符串的不同 大小写 版本
  • Android IME,在EditText中设置光标位置

    我正在使用软键盘 需要在 IME 编辑文本中设置光标位置 如上图所示 我创建了软键盘 我们可以看到在编辑文本和当前光标位置 由蓝色指示器显示 中输入了一些文本 我需要将光标位置设置在当前行的末尾 在我们的例子中 在图像中首先以红色显示的行的
  • 如何在 Ruby 应用程序中找到未使用的方法?

    我有一个 Ruby 应用程序 其中有很多类 模块 其中一些未使用 有没有一种简单的方法可以找出哪个 我正在考虑做一个配置文件 然后使用它的输出 还有其他想法吗 像 rcov 这样的覆盖工具可能会有所帮助 https github com r
  • 如何在二维图像中的不规则形状上应用纹理?

    我正在尝试从 UIColor 图案图像在 CALayer 上应用纹理 纹理正在应用 但未正确透视转换 看起来我的绘图逻辑存在问题 即我需要使用纹理图像并将其映射到不规则形状 我做了一些研究 发现这件事可以通过 OpenGL 或 Metal
  • TypeORM 选择不区分大小写的不同

    我正在尝试创建一个连接到 postgresql 数据库的 TypeORM 查询生成器以获取数据库中的所有唯一名称 我的查询看起来像这样 names await this context manager getRepository Names
  • 如何在text2vec中对齐两个GloVe模型?

    假设我已经训练了两个独立的 GloVe 向量空间模型 使用text2vec in R 基于两个不同的语料库 这样做可能有不同的原因 例如 两个基础语料库可能来自两个不同的时间段 或者两个非常不同的流派 我有兴趣比较这两个语料库之间单词的用法
  • 删除名称与模式匹配的多个数据库

    我想删除所有以单词开头的数据库 abc xyz cms db1 cms db2 cms xyz pqr 在上面给出的示例中 我想删除所有以 cms 一词开头的数据库 我想 maatkit 或 shell 脚本可以做到这一点 最好的方法是什么
  • 当 SOAP 正文包含 UTF-8 BOM 时出现 JAX-WS 错误

    我使用部署在 WebLogic 10 3 上的 JAX WS v2 1 3 Sun JDK 1 6 0 05 开发了一个 Web 服务 当我使用 Java 客户端或 SoapUI 或其他 Web 服务测试工具时 该服务运行良好 我需要使用
  • 为什么 BigQuery 不显示 Firebase-Analytics 数据?

    我正在使用 BlazePlan 并将我的 firebase 分析帐户与 BigQuery 相关联 尽管已经过去两天多了 我仍然无法在 BigQuery 中看到分析数据 有 Firebase crashlytics firebase mess
  • 如何在 blazor navigator 中将复杂对象作为参数传递

    当尝试传递复杂对象作为参数时 它只传递对象的类型名 导航到不同的组件 页面时传入复杂对象的选项有哪些 这就是我尝试过的 page showLocation SelectedOrgLocation 正在发送信息的页面 navManager N
  • 如何在Kubernetes集群中创建用户?

    我正在尝试在 Kubernetes 集群中创建用户 我使用我的 Terraform 脚本在 DigitalOcean 上旋转了 2 个水滴 然后我使用登录主节点 Dropletssh doctl compute ssh droplet1 接
  • 多处理池的意外行为

    在下面的代码中 我期望输出为 2 因为我在将函数分配给多处理池之前更改了 config 的值 但我得到的是 5 我确信这是有充分理由的 但不知道如何解释 from multiprocessing import Pool config 5 c
  • 更改动态任务中自动生成的任务名称

    我正在尝试创建一个动态工作流程 但想要更改气流自动生成的任务名称并将其分配给列表中的任务 我尝试访问上下文并手动更改taskid但这在 UI 中的管道渲染期间也不起作用 My Code def get the route router ip
  • 如何从 emf 模型生成“带注释的 java 代码”

    更准确地说 我想知道如何将注释建模到 core 模型定义中 这样生成的 java 代码就会包含它们 例如 hibernate 持久性标签 EMF 论坛上的这篇文章讨论了如何使用自定义模板来生成代码 https www eclipse org