动静结合
将生成动态文件和拷贝静态文件相结合,就得到了简易的模板生成工具:即组合调用前面写过的两个生成器,先复制静态文件,在覆盖动态文件
创建MainGenerator.java
类,组合调用动、静态生成器:
public class MainGenerator {
public static void main(String[] args) throws TemplateException, IOException {
MainTemplateConfig mainTemplateConfig = new MainTemplateConfig();
mainTemplateConfig.setAuthor("yanghua");
mainTemplateConfig.setLoop(false);
mainTemplateConfig.setOutputText("求和结果:");
doGenerate(mainTemplateConfig);
}
/**
* 对代码模板 进行 填坑
* @param model 参数值
* @throws TemplateException
* @throws IOException
*/
public static void doGenerate(Object model) throws TemplateException, IOException {
// 获取当前相对路径(文件夹名称)
String projectPath = System.getProperty("user.dir");
// System.out.println(projectPath);
// 获取父文件夹路径
File parentFile = new File(projectPath).getParentFile();
// 输入路径(源路径)
String inputPath = new File(parentFile, "code-chameleon-demo-projects/acm-template").getAbsolutePath();
// 输出文件路径
String outputPath = parentFile.getPath();
// 1、生成静态文件
StaticGenerator.copyFilesByRecursive(inputPath, outputPath);
// 2、生成动态文件
// 动态文件 源模板文件地址
String inputDynamicFilePath = projectPath + File.separator + "src/main/resources/templates/MainTemplate.java.ftl";
String outputDynamicFilePath = outputPath + File.separator + "acm-template/src/com/yanghua/acm/MainTemplate.java";
// 生成的动态文件地址
DynamicGenerator.doGenerate(inputDynamicFilePath, outputDynamicFilePath, model);
}
}
注:
1、MainTemplateConfig:用来定义模板文件中需要填的坑(即参数)。
2、projectPath:为当前打开项目的跟目录,注意文件位置,防止读取模板文件失败。
文件结构目录: