Eclipse 的 Java Emitter Templates(JET)一个开源的模板引擎,其功能是在 Eclipse Modeling Framework(EMF)中生成代码。

JET 技术介绍

Eclipse 的 Java Emitter Templates(JET)一个开源的模板引擎,其功能是在 Eclipse Modeling Framework(EMF)中生成代码。 JET 的语法与 JSP 语法比较相似,但它们处于不同的应用领域。

JET 的模板文件(template files)后缀一般为(*.jet),但为区分生成文件的类型建议扩展名采用生成文件类型加 jet 后缀的方式,如 ***.javajet、***.textjet 等。

org.eclipse.emf.codegen.jet.JETEmitter 是 JET 的核心类,其 generate() 方法完成实现两个功能,将模板文件转换为模板执行类(template implementation class)然后通过模板执行类的输出生成相应的代码或文本。

图 1. 文本生成流程图

JET 应用示例

本文随附三个示例源码,下文描述的三个示例分别对应示例源码中的 demo1、demo2 及 demo3,示例中具体方法写在示例源码中 SampleNewWizard 的 doFinish 方法中。将示例项目以 Eclipse Application 方式运行后,在新运行的 Eclipse 平台上选择菜单 FileNewOther,在弹出的 New 对话框中选择 JET Sample Wizards Demo1 至 Demo3,在弹出对话框中填入相应内容即可显示示例效果。

图 2. JET Sample Wizards

下文用三个示例来演示 JET 的功能和用法。示例 1 演示使用 JETEmitter 类生成简单的文件。示例 2 利用 JET 中的骨架 (skeleton) 技术对模板编译后的模板执行类进行方法定制。示例 3 利用类 JMerger 与合并规则达到自动生成代码与手工代码合并的效果。

示例 1 简单的文件生成(demo1)

1 编写模板,JET 语法与 JSP 语法很相似。下面是一个最简单的带有参数的模板文件 demo1.jet 。

清单 1. Demo1.jet

模板文件一般放在插件项目的 templates 目录下,模板中的 argument 是 JET 的隐含变量,它代表用户的输入参数 , 一般是数据变量集。

模板的第一行表示生成内容的包路径为 demo.translated,模板执行类是 Demo1.java,该类 import java.util.List 。

转载于:https://blog.51cto.com/liuxiaoan/704325

基于 Eclipse 平台的代码生成技术相关推荐

  1. 基于Eclipse平台的Android OpenCV开发环境搭建

    基于Eclipse平台的Android OpenCV开发环境搭建 作者:雨水, 日期:2016-1-31,CSDN博客:http://blog.csdn.net/gobitan 摘要:本文主要记录了如 ...

  2. 案例 | 信安运维基于 TKE 平台的容器技术实践

    作者 汤英康,腾讯高级工程师.Kubernetes 开源协同 PMC,负责TEG信息安全部的容器化上云相关工作. 引言 截止到2021年5月,TEG 信安运维团队历时一年,完成了 TKE 容器从0到1 ...

  3. eclipse 输入提示插件_【STM32】搭建基于Eclipse平台的STM32调试环境

    以NuttX工程为例,硬件平台STM32F103C8. 1 导入工程 File->Import 选择Existing Code as Makefie Project,点击next 输入工程名字( ...

  4. Eclipse平台技术概述

    版权所有,2006年,国际商业机器公司. Eclipse平台技术概述 此文档在EclipsePublicLicense 1.0下提供(EPL). 摘要 Eclipse平台是为构建集成开发环境(IDE) ...

  5. 关于Eclipse平台的使用和开发第一个SWT程序

    IBM把投入巨资开发的Eclipse作为一个开源项目捐献给了开源组织Eclipse.org Eclipse出色而有独创的平台特性,现在仍由IBM子公司OTI(主要从事Eclipse开发的人)继续领导着 ...

  6. Python IDE之Pydev: 基于Eclipse搭建python的编译环境(Eclipse+pydev)简介、安装、使用的详细攻略

    Python IDE之Pydev: 基于Eclipse搭建python的编译环境(Eclipse+pydev)简介.安装.使用的详细攻略 目录 pydev简介 PyDev 安装和配置 1.安装MyEc ...

  7. 基于AgileEAS.NET SOA 平台SAAS架构技术的开源分销ERP系统-SmartERP.NET下载配置说明

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  8. 基于eclipse开发Android天气,基于android平台的天气预报软件的设计与实现.doc

    基于android平台的天气预报软件的设计与实现 摘 要 随着智能手机一步步走进普通人的生活,它将成为人们获取信息的主要设备.因此手机的娱乐应用服务将会有很大的发展空间手机快捷查询软件就是其中的一项. ...

  9. erp框架 saas_基于AgileEAS.NET SOA 平台SAAS架构技术的开源分销ERP系统-SmartERP.NET下载配置说明...

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

最新文章

  1. python批量新建文件夹_python根据txt文本批量创建文件夹
  2. nginx php-fpm 输出php错误日志(转)
  3. java 继承 子类 实例化_关于Java继承中父类和子类构造函数的问题
  4. 苹果11是高通基带吗_最强对抗!小米11对抗三星、苹果华为等最高旗舰|喜欢小米吗?...
  5. 冒烟指数:大数据监测互联网金融风险
  6. extend()与append()的区别
  7. python len函数_你需要了解的最重要的Python概念
  8. P3935 Calculating
  9. 中班音乐活动 机器人_幼儿园大班音乐活动教案:《机器人》
  10. 第08章-使用Spring Web Flow
  11. 淘宝类目批量查询工具v1.0 发布
  12. SQL语句之表的创建和使用
  13. 第二章、Magick命令组合多个图像处理操作
  14. 路由器和交换机的转发过程
  15. 对数正态分布的随机数产生 C语言实现
  16. tushare获得股票数据后进行数据合并
  17. 2021年制冷与空调设备运行操作考试题及制冷与空调设备运行操作证考试
  18. 2023年5月19日Redis学习记录(笔记md文档非本人亲自编写,仅作为个人学习记录,无其他目的)
  19. 【postman】postman批量执行接口测试
  20. rocketmq python消息堆积_MQ 消息构造--学会分解问题

热门文章

  1. 谷歌紧急修复已遭在野利用的Chrome 0day
  2. Apache Commons Collections反序列化漏洞分析与复现
  3. 思科警告:IOS 路由器中含有多个严重缺陷,可导致“系统完全受陷”
  4. python_vlc 播放http流
  5. 【讨论帖】你认为怎么注释是比较合理妥当的方式
  6. PHP性能调优,PHP慢日志---善用php-fpm的慢执行日志slow log,分析php性能问题
  7. Windows:打开MSDTC,恢复Windows任务栏,查看windows日志,打开远程桌面,打开Services,资源监控...
  8. PHP关闭$_ENV后获取服务器参数的办法
  9. 越知道自己要什么,越知道自己是什么
  10. 利用位运算实现加减乘除