freemarker程式碼生成
程式碼生成
用一事例講解程式碼生成
1. 首先寫一個類,如TitanPluginExporter 讓其繼承GenericExporter類。在該類中有一個init方法,該方法的作用是設定模板的路徑和生成檔案的型別。
public class TitanPluginExporter extends GenericExporter {
protected void setupContext() {
super.setupContext();
}
public void doStart() {
super.doStart();
}
protected void init() {
setTemplateName("templates/config/generation/titanplugin_xml.ftl");
setFilePattern("{package-name}/{class-name}.xml");
}
public TitanPluginExporter() {
init();
}
}
2. GenericExporter類繼承了AbstractExporter類,在該類中有一個方法
protected void exportPOJO(Map additionalContext) {
TemplateProducer producer = new TemplateProducer(getTemplateHelper(),
getArtifactCollector());
WebprojectVO webprojectVO = StaitcVO.getWebprojectVO();
additionalContext.put("webproject", StaitcVO.getWebprojectVO());
if (templateName == "templates/config/generation/webproject_project.ftl") {
producer.produce(additionalContext, getTemplateName(), new File(
getOutputDirectory(), resolve("", "")), templateName);
}
if (templateName == "templates/config/generation/webproject_classpath.ftl") {
producer.produce(additionalContext, getTemplateName(), new File(
getOutputDirectory(), resolve("", "")), templateName);
}
if (templateName == "templates/config/generation/titanplugin_xml.ftl") {
producer.produce(additionalContext, getTemplateName(), new File(
getOutputDirectory(), resolve("titanplugin", "")), templateName);
}
}
該方法的作用是判斷是否是所要生成檔案所使用模板,如果是為所要生成的檔案設定包名和檔名。
3. 按照freemarker的規則,去寫templates/config/generation/titanplugin_xml.ftl模板
4. 本例是結合了嚮導,所以在TitanNewWizard類的performFinish()中,寫入
Exporter projectExporter = new ProjectExporter();
projectExporter.setOutputDirectory(folder);
webprojectVO.setWebprojectName(projectName);
webprojectVO.setDomainName(domainName);
Exporter classpathExporter = new ClasspathExporter();
classpathExporter.setOutputDirectory(folder);
Exporter titanpluginExporter = new TitanPluginExporter();
titanpluginExporter.setOutputDirectory(folder);
List exporters = new ArrayList();
exporters.add(0, projectExporter);
exporters.add(1, classpathExporter);
exporters.add(2, titanpluginExporter);
for (int i = 0; i < exporters.size(); i++) {
((Exporter) exporters.get(i)).start();
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13726712/viewspace-608777/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- freemarker 生成 Java 程式碼Java
- 實現一個程式碼自動生成(一):模板引擎Freemarker
- freemarker 生成前端檔案前端
- 用Main方法呼叫freemarker生成檔案AI
- 《程式碼大全》程式碼生成
- 我是如何使用freemarker生成Word檔案的?
- 生成驗證碼程式程式碼
- Spring boot入門(三):整合AdminLTE(Freemarker),結合generate程式碼生成器,利用DataTable和PageHelper分頁Spring Boot
- UI2Code智慧生成Flutter程式碼——機器生成程式碼UIFlutter
- Java使用FreeMarker模版技術動態生成word實踐Java
- golang程式碼生成工具Golang
- Go - 程式碼生成工具Go
- 程式碼生成工具(一)
- mybatisplus程式碼生成MyBatis
- 程式碼生成器
- AOS 自動生成程式碼(三) Service生成
- spring原始碼分析之freemarker整合Spring原始碼
- (程式碼生成)JS寫的程式碼生成器-編碼也可以這麼爽..JS
- GO程式碼生成程式碼小思小試Go
- Protobuf 生成 Go 程式碼指南Go
- Laravel 程式碼生成器Laravel
- svg生成矩形效果程式碼SVG
- js 程式碼生成器JS
- Emit動態生成程式碼MIT
- ZT 程式碼生成器
- 程式碼生成框架Velocity框架
- VAE生成人臉程式碼
- mybatis-plus程式碼生成MyBatis
- DDPM生成人臉程式碼
- freemarker根據靜態模板和動態模板生成PDF與Word
- 最詳細版本|UI2Code智慧生成Flutter程式碼——機器生成程式碼UIFlutter
- 線上生成二維碼程式碼例項
- Tp生成小程式二維碼
- go模板-程式碼生成器Go
- Gckit-CLI-程式碼生成工具GC
- MyBatis Plus程式碼生成器MyBatis
- yaf程式碼生成工具的使用
- 軟著整理程式碼快速生成