使用freemarker生成java文件(其他文件也可以)
freemarker 使用模板文件快速创建文件
demo:
package com.company; import freemarker.template.Configuration; import freemarker.template.DefaultObjectWrapper; import freemarker.template.Template; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @author cunxp * @date 2018/8/31 * @description */ public class TestFreeMarker { public static void main(String[] args) { try { Map root = new HashMap(); root.put("package", "com.chinaoly.job.entity"); root.put("user", "cunxp"); root.put("date", "2018/08/31"); root.put("tableName", "task"); root.put("className", "Task"); List data = new ArrayList(); data.add("@Column(name = \"task_name\")\nprivate String taskName;\n"); data.add("@Column(name = \"task_description\")\nprivate String taskDescription;\n"); data.add("@Column(name = \"file_name\")\nprivate String fileName; \n"); root.put("data", data); Configuration cfg = new Configuration(Configuration.VERSION_2_3_28); cfg.setDirectoryForTemplateLoading(new File("E:/project/hivetest/template/")); cfg.setObjectWrapper(new DefaultObjectWrapper(Configuration.VERSION_2_3_28)); Template temp = cfg.getTemplate("demo.ftl"); String fileName = "demo.java"; File file = new File("E:/project/hivetest/template/" + fileName); FileWriter fw = new FileWriter(file); BufferedWriter bw = new BufferedWriter(fw); temp.process(root, bw); bw.flush(); fw.close(); } catch (Exception e) { e.printStackTrace(); } } }
模板文件:
package ${package}; import org.hibernate.annotations.GenericGenerator; import javax.persistence.*; import java.io.Serializable; import java.util.Date; /** * @author ${user} * @date ${date} * @description */ @Entity @Table(name = "${tableName}") public class ${className} implements Serializable { private static final long serialVersionUID = 1L; <#list data as row> ${row} </#list> }