作为一个现实世界的例子,我们将创建一个插件,需要用户输入,并生成类型安全的枚举类。生成的源代码是基于一个 JET 模板,可分布插件的插件,允许用户自定义编辑模板生成的代码。
源代码
要运行示例或查看为本文的源代码,您可以将其解压缩到您的插件/子目录org.eclipse.emf.examples.jet.article2_2.0.0.zip。要使用插件的例子,您将需要EMF插件2.0版安装。
简介
转换vs.生成
JET模板第一个容易混淆的方面是生成代码有两步:转换和生成。第一步是将模板转换成模板生成类。第二步是使用模板生成类来生成代码。
如果你使用JET的目标是生成java源代码,一个迷惑的地方是模板转换的过程也会生成java代码。记住这个代码不是生成的最终代码,而是转换步骤的结果,仅仅是模板的另一种形式。
如果你已经用过JSP和servlet,你可以把JET认为是与JSP页面等价的东西。一个JET模板转换成模板生成类,就像JSP页面转换成servlet。在第二步中,模板生成类将会生成代码,就等价于servlet生成并返回HTML。
在下面的部分,我们会编写使用JET包中类的插件来生成java源代码。一个从JET模板生成代码的插件不再依赖于JET Nature和JET Builder来自动转换代码。这是因为JET Nature和JET Builder只作用于工作空间中的工程,不是插件。插件需要JET包中的类来转换它们的模板。
下一章节会讨论在org.eclipse.emf.codegen包中的一些类。我们会看到用JET生成源代码的步骤,以及JET引擎类如何适合。如果你急于看到一些代码,学习怎样在实践中使用这些类,你可以直接去看“ 一个生成源代码的插件”。