WEB开发网
开发学院软件开发Java 使用 Eclipse Modeling Framework 进行建模,第 2... 阅读

使用 Eclipse Modeling Framework 进行建模,第 2 部分:使用 Eclipse 的 Java Emitter Templates 生成代码

 2009-12-17 00:00:00 来源:WEB开发网   
核心提示: 命令行在命令行中编译 JET 非常简单,不会受到 classpath 问题的影响,使用 Eclipse Modeling Framework 进行建模,第 2 部分:使用 Eclipse 的 Java Emitter Templates 生成代码(8),这个问题会使编译一个 main() 方法都

命令行

在命令行中编译 JET 非常简单,不会受到 classpath 问题的影响,这个问题会使编译一个 main() 方法都非常困难。在上面这种情况中,难点并不是将 javajet 编译成 Java 代码,而是将这个 Java 代码编译成 .class 。在命令行中,我们可以更好地控制 classpath,这样可以分解每个步骤,最终再组合起来,就可以使整个工作顺利而简单。唯一一个技巧是我们需要以一种 "无头" 模式(没有用户界面)来运行 Eclipse,但即便是这个问题也已经考虑到了。要编译 JET,请查看一下 plugins/org.eclipse.emf.codegen_1.1.0/test 。这个目录中包含了 Windows 和 Unix 使用的脚本,以及一个要验证的 JET 例子。

作为一个 ANT 任务执行

有一个 ANT 任务 jetc ,它要么可以采用一个 template 属性,要么对多个模板有一个 fileset 属性。一旦配置好 jetc 任务的 classpath 之后,模板的编译就与标准的 Java 类一样简单。

定制 JET 以生成 JSP

最终,JET 使用 "<%" 和 "%>" 来标记模板,然而这与 JSP 使用的标记相同。如果您希望生成 JSP 程序,那就只能修改定界符。这可以在模板开头的 jet 声明中使用 startTag 和 endTag 属性实现,如清单 9 所示。在这种情况中,我使用 "[%" 和 "%]" 作为开始定界符和结束定界符。正如您可以看到的一样, "[%= expression %]" 可以正确处理,就像前面的 "<%= expression %>" 一样。


清单 9. 修改标签后的 JET 模板
<%@ jet 
  package="com.ibm.pdc.example.jet.gen" 
  class="JspGen" 
  imports="java.util.* " 
  startTag = "[%" 
  endTag = "%]" 
  %> 
[% String argValue = (String)argument; %] 
package [%= argValue %]; 

结束语

有一个不幸的事实:很多代码都是通过拷贝/粘贴而实现重用的,不管是大型软件还是小型软件都是如此。很多时候这个问题并没有明显的解决方案,即使面向对象语言也不能解决问题。在重复出现相同的基本代码模式而只对实现稍微进行了一些修改的情况中,将通用的代码放到一个模板中,然后使用 JET 来生成各种变化,这是一种很好的节省时间和精力的办法。JSP 早已采用了这种方法,因此 JET 可以从 JSP 的成功中借鉴很多东西。JET 使用与 JSP 相同的基本布局和语义,但是允许更灵活的定制。为了实现更好的控制,模板可以进行预编译;为了实现更高的灵活性,也可以在运行时编译和分发。

在本系列的下一篇文章中,我们将介绍如何为 Prime Time 生成代码,这包括允许用户定制代码,以及集成以域或方法甚至更细粒度级别的修改,从而允许重新生成代码。我们还会将它们都绑定到一个插件中,从而展示一种将生成的代码集成到开发过程的方法。

上一页  3 4 5 6 7 8 

Tags:使用 Eclipse Modeling

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接