vscod写js代码提⽰插件_写⼀个代码⽣成器的⼼路历程,和⼀个只需要⼀天就能完成的代码⽣。。。
为什么要写⼀个代码⽣成器
在写后端项⽬的时候,基础的实现功能都是增删查改,通常以表或者指定的数据模型为单位进⾏增删查改。
在⼤部分的Web项⽬中,通常写⼀个增删查改需要新建很多个基础类。
假设你的项⽬是由 控制层、服务层、数据访问层组成,那么如果新增⼀个表的增删查改功能,我们就也许需要针对这个表创建以下这些类。
Model.java
java源代码加密ModelController.java
IModelService.java
ModelService.java
IModelDao.java
ModelDao.java
创建完成后,某些项⽬结构是有通⽤的基础类,可能还需要根据Model类型来添加泛型,这样⼜是需要⼀顿复制粘贴的操作。
interface IModelService extends IBaseService<Model,Long> {}
class ModelService extends BaseService<Model,Long> implements IModelService {}
interface IModelDao extends IBaseDao<Model,Long> {}
class ModelDao extends BaseDao<Model,Long> implements IModelDao {}
当然每个公司的项⽬结构都不同,以上操作可能有多有少,但是对于⼀个后台系统来说,⼤量类似的增删查改类是少不了的。 如果你的项⽬结构是⽆规律的,那么代码⽣成器可能不太适合你
代码⽣成器的级别
1. 复制粘贴型代码⽣成器
顾名思义,最简单也是⽤的最多的⽅式,直接将现有的其他类似⽂件复制⼀份,改⼀改关键信息即可。
成本最低,耗时根据项⽬需要复制的⽂件决定。有可能因为少改某些内容导致代码异常。
总的来说,通过复制粘贴的⽅式来⽣成代码,简单易⽤,⽆学习成本,但是⽐较容易出错,有⼀定修改成本,耗时和⽂件数量、修改内容成正⽐。
1. 框架⾃带代码⽣成器
通常和框架绑定,对于已有的系统难以植⼊,局限性⾼。⽣成的代码格式较为单⼀,很难做灵活配置化使⽤。
2. ⾃定义代码⽣成器
因为⼤部分系统的代码结构⽐较统⼀,但⼜有些不同,所以在市场上没有适合⾃⼰的⽣成器的时候,我们就会选择⾃⼰写⼀个,通过直接执⾏main⽅法来⽣成⽂件,定义⼏个参数,在需要⽣成的时候进⾏修改执⾏。
本⽂介绍的代码⽣成器主要在此基础上进⾏扩展,通过maven插件的⽅式,将需要⾃定义的参数通过插件配置来运⾏,这样⼀套代码多地使⽤,只需要添加maven依赖,不需要将⽣成器的代码复制多遍难以维护。
⾃定义代码⽣成器maven插件
代码⽣成器的原理,⼤体就是根据指定的模板,传⼊动态的参数,替换模板内容,动态⽣成不同的⽂件代码。
通过maven插件的⽅式,可以很好的集成到我们的项⽬中,只需要添加插件依赖,然后添加⼏个配置,执⾏maven相关命令,就可以完成代码⽣成的操作。
这是我在⼯作当中为了给组员提供更优质的开发体验,⽽编写的⼀款代码⽣成器。
地址: github/k55k32/simple-codegen
simple-codegen 使⽤freemarker作为模板引擎,结合maven插件,使参数配置简单化, 并且多项⽬使⽤只需要添加插件依赖,并且修改制定参数,定制好模板,即可⼀键⽣成代码。
因为模板可以根据项⽬⾃定义,基本所有情况下,只需要定义好模板,配置参数,即可开始使⽤
⽬前的参数都算是固定参数,未来可能还将⽀持⼀些动态参数例如:
读取表结构作为参数
直接调⽤接⼝, 获取返回值作为参数
直接调⽤本地代码,获取返回值作为参数
代码实现细节讲解
代码真的很简单,⽬前总共就⼀个模板渲染的功能,⼤家可以⾃⾏看源码,不懂的可以提Issue, 有优化可以提 Pull Request
上传⾄中央仓库教程
我真是边写教程边上传,真正的⼀⼿实操经验
1. 申请中央仓库账号
进⼊
点击 Sign up 创建账号
新建⼀个问题类型为New Project的, 注意Group Id和⾃⼰项⽬l要⼀致,如果是⾃⼰的域名,需要有域名DNS管理权限,因为仓库管理员会要求你添加TXT记录指向指定地址。如果没有⾃⼰的域名,可以⽤⾃⼰的Github地址,管理员会要求你创建⼀个指定名称的仓库
- 提交申请完成后,管理员就会通知你⽤户已经可以上传快照版本或者发布版本了
前期注册⼯作就完成了,接下来是上传流程,接下来流程⽤到的⽤户名密码使⽤刚刚创建的⽤户名密码
2. l 修改和 l 配置
在本地maven配置 l 内添加⾃⼰的账号密码(上传需要), id可以⾃定义。账号密码可以明⽂输⼊,也可以登陆
点击右上⾓⽤户名进⼊Profile, 然后选择User Token创建⼀个加密的 Access User Token , 可以替换l 内的账号密码,这样可以避免明⽂保存⽤户名密码
<servers>
<server>
<id>sonatype-center</id>
<username>youRegisterUsername</username>
<password>youRegisterPassword</password>
</server>
</servers>
在 l 内添加远程发布仓库地址,注意id需要和 settings-xml配置的⼀致
<distributionManagement>
<repository>
<id>sonatype-center</id>
<name>releases repo</name>
<url>/service/local/staging/deploy/maven2</url>
</repository>
<snapshotRepository>
<id>sonatype-center</id>
<name>snapshots repo</name>
<url>/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
<name>simple-codegen</name>
<url>diamondfsd</url>
<description>
simple code generate maven plugin.
Template rendering through Java and freemarker.
</description>
<developers>
<developer>
<id>diamondfsd</id>
<name>Diamond Zhou</name>
<email>diamondfsd@gmail</email>
<url>diamondfsd</url>
<timezone>8</timezone>
</developer>
</developers>
<licenses>
<license>
<name>The MIT License</name>
<url>/licenses/MIT</url>
<distribution>repo</distribution>
</license>
</licenses>
<scm>
<url>
github/k55k32/simple-codegen.git
</url>
</scm>
3. ⽂件签名(不签名⽆法发布)
签名教程
windows版本密钥⽣成⼯具下载: /download.html
安装完成后的名字叫: Kleopatra 打开后,新建⼀个密钥对,创建完成后。
注意如果是在IDE等环境中运⾏maven,安装完Kleopatra需要重启IDE,否则环境变量未⽣效,执⾏maven插件的时候,不到 gpg 命令l 添加插件配置
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
4. 到中央仓库发布
执⾏ mvn clean deploy 上传到中央仓库
登陆 / 点击左侧 Staging Repositoryies 菜单,然后下拉到最下⾯,可以到你刚刚上传的包
选中改包点击 Close
Close 完成后,点击 Release (如果Close失败, 点击项⽬,可以在底部Activity内看到失败原因,根据原因⾃⾏解决)
Release 完成后,你的包就进⼊了中央仓库同步队列了,同步完成后,其他⼈就可以直接在 l 内添加你的包依赖了,具体的同步时间,官⽅给出的是10分钟内会同步到中央仓库,可以引⽤依赖。然后2⼩时内同步到搜索引擎,可以在
搜索到。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论