使用 Eclipse Modeling Framework 进行建模,第 2 部分:使用 Eclipse 的 Java Emitter Templates 生成代码
2009-12-17 00:00:00 来源:WEB开发网然后在想要使用这个定制骨架的任何 JET 模板中,向 javajet 文件中的 jet 声明添加 skeleton="custom.skeleton" 属性。
或者,也可以使用它对基类进行扩充,例如 public class CLASS extends MyGenerator ,并在基类中添加所有必要的帮助器方法。这样可能会更加整洁,因为它保留了代码的通用性,并可以简化开发过程,因为 JET 编译器并不能总是给出最正确的错误消息。
定制骨架也可以用来修改方法名和 generate() 方法的参数列表,这样非常挑剔的开发人员就可以任意定制模板。说 JET 要将 generate() 的代码替换为要生成的代码,其实有些不太准确。实际上,它只会替换在骨架中声明的最后一个方法的代码,因此如果粗心地修改骨架的代码,就很容易出错,而且会让您的同事迷惑不解。
使用 CodeGen
正如您可以看到的一样,模板一旦编译好之后,就是一个标准的 Java 类。要在程序中使用这个类,只需要分发编译后的模板类,而不需要分发 javajet 模板。或者,您可能希望让用户可以修改模板,并在启动时自动重新编译模板。EMF 可以实现这种功能,任何需要这种功能或对此感兴趣的人都可以进入 plugins/org.eclipse.emf.codegen.ecore/templates 中,并修改 EMF 生成模型或编辑器的方式。
如果您只是希望可以只分发编译后的模板类,那么编译过程可以实现自动化。迄今为止,我们只看到了如何使用 JET Eclipse 插件来编译 JET 模板,但实际上我们可以编写一些脚本来实现这种功能,或者将生成代码的工作作为一项 ANT 任务。
运行时编译模板
要让最终用户可以定制模板(以及对模板的调试),可以选择在运行时对模板进行编译。实现这种功能有几种方法,首先我们使用一个非常有用的类 org.eclipse.emf.codegen.jet.JETEmitter ,它可以对细节进行抽象。常见的(但通常是错误的)代码非常简单,如清单 7 所示。
- 中查找“使用 Eclipse Modeling Framework 进行建模,第 2 部分:使用 Eclipse 的 Java Emitter Templates 生成代码”更多相关内容
- 中查找“使用 Eclipse Modeling Framework 进行建模,第 2 部分:使用 Eclipse 的 Java Emitter Templates 生成代码”更多相关内容
- 上一篇:使用 Eclipse Modeling Framework 进行建模,第 3 部分:使用 Eclipse 的 JMerge 定制生成的代码和编辑器
- 下一篇:用 Eclipse Modeling Framework 实现模型驱动开发,第 1 部分:创建 UML 模型并生成代码
更多精彩
赞助商链接