Eclipse 的 Java Emitter Templates(JET)一个开源的模板引擎,其功能是在 Eclipse Modeling Framework(EMF)中生成代码。 JET 的语法与 JSP 语法比较相似,但它们处于不同的应用领域。
JET 的模板文件(template files)后缀一般为(*.jet),但为区分生成文件的类型建议扩展名采用生成文件类型加 jet 后缀的方式,如 ***.javajet、***.textjet 等。
一、JET工程的创建
1、创建一个project
2、将project转换成JET project
右键单击project选择New->Other...->Java Emitter templates->Convert Project to JET Projects,此时会创建一个templates文件夹,同时一个JET Builder被添加到project中,它可以自动将每一个以“jet”结尾的文件转换成java类。
3、改变JET设置
为确保src源文件夹为目标文件夹,右键单击project选择“Properties”,在对话框里选择“JET Settings”在“Source Container”中填上“src”。
注意:可以有多个“template Containers”文件夹,用空格或分号隔开。如果多个模板文件夹有同样的名字,只有第一个中的文件会被转换。所以模板文件夹应该有不同的名字。
4、创建JET template文件
向template文件夹中添加.*jet文件。选择File->New->File,注意以扩展名jet结尾。如果弹出错误提示可忽略(只是JET Builder在创建时就开始视图转换文件却发现它是空的。)
二、编写.jet模板文件
是一个最简单的带有参数的模板文件 demo1.jet为例。
example.jet文件
<%@jet package="myjetexample" imports="java.util.List" class="ModelGenerator"%>
Hello, <%=((List)argument).get(0).toString()%>!
The current time is <%=new java.util.Date()%>.
第二行和第三行是 JET 需要生成的文件内容,使用 <% …… %> 包括代码,使用 <%= …… %> 打印表达式的值,正确地使用 <% …… %> 标签就可以添加任何逻辑循环或结构。package指的是中间生成代码所属的包,类名是中间类名。保存.jet文件后,在工程的myjetexample包中会生成一个ModelGenerator.java类,而import则是中间类生成相应代码所需的包。
三、生成代码的操作
// 模板文件所在插件项目的名称
String pluginId = "jet3";
// 通过插件项目获得其路径(basePath)
String basePath = Platform.getBundle(pluginId).getEntry("/").toString();
// 模板文件在项目中的路径及文件名
String uri = "templates/echo.jet";
JETEmitter emitter = new JETEmitter(basePath + uri);
IProgressMonitor progress = new NullProgressMonitor();
// 声明一个 List 作为数据变量集的 container
List<String> argument = new ArrayList<String>();
argument.add(fileName);
argument.add("12334");
// 对当前模板进行转换并将需要输出成实际文件的内容返回以便通过输出流输出
String result = emitter.generate(progress, new Object[] { argument });
四、依赖插件
org.eclipse.emf.codegen
参考文献:http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-jet/
http://blog.csdn.net/wyhuiwyhui/article/details/6613621