目录
一、项目概述
1.代码生成器解决的问题
2.代码生成器的实际应用
3.本地代码生成器的业务流程
4.实现思路
二、项目初始化
项目Gitee地址:Code-Generator: 代码生成器!!!
一、项目概述
1.代码生成器解决的问题
代码生成器本身的作用就是自动生成常见、重复性的代码片段,解决重复编码、效率低下的问题。
在团队开发中,要生成的代码可能是需要频繁变化和持续更新维护的。如果有一个线上平台来维护多个不同的代码生成器,支持在线编辑和共享生成器,在提高开发效率的同时、将有利于协作共建,打造更高质量的代码生成器。
2.代码生成器的实际应用
举例一些代码生成的实际应用场景:
1)经常做算法题目的同学,可能需要一套Java ACM 代码输入模板,能够支持多种不同输入模式 (比如单次读取和循环)
2)经常开发新项目的同学,可能需要一套初始化项目模板代码,比如一键生成 Controller 层代码(替换其中的对象)、整合 Redis 和 MySQL 依赖等。
3)甚至可以制作项目“换皮”工具,支持一键给网络热门项目换皮(比如替换项目的名称、Logo 等)
3.本地代码生成器的业务流程
这个阶段,我们的目标是做一个本地(离线)的代码生成器,实现一个简易的Java ACM 模板项目的定制化生成。
1)准备用于制作代码生成器的原始代码(比如 Java ACM 模板项目),用于后续生成
2)开发者基于原始代码,设置参数、编写动态模板
3)制作可交互的命令行工具,支持用户输入参数,得到代码生成器jar 包
4)使用者得到代码生成器jar 包,执行程序并输入参数,从而生成完整代码
4.实现思路
1)先根据本地项目,扫描文件树,实现同样的静态代码生成
2)根据本地的项目,预设部分动态参数、编写模板文件,能够传入配置对象进行生成
3)制作可交互的命令行工具,接受用户输入的参数,并动态生成代码
4)封装制作代码生成器jar 包文件,并简化使用命令
二、项目初始化
创建普通的Maven项目,项目结构:
在generator-basic中导入依赖:
<dependencies>
<!-- https://freemarker.apache.org/index.html -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.32</version>
</dependency>
<!-- https://picocli.info -->
<dependency>
<groupId>info.picocli</groupId>
<artifactId>picocli</artifactId>
<version>4.7.5</version>
</dependency>
<!-- https://doc.hutool.cn/ -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.16</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
</dependency>
<!-- https://projectlombok.org/ -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
成功运行Main.java,说明项目初始化成功: