Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >代码生成器(一)

代码生成器(一)

作者头像
阑梦清川
发布于 2025-02-24 14:43:41
发布于 2025-02-24 14:43:41
7100
代码可运行
举报
文章被收录于专栏:学习成长指南学习成长指南
运行总次数:0
代码可运行
前段时间买了那个yupi的变成导航项目实战课,里面的这个内容就是介绍了一个类似于代码生成器的项目,购买书籍之后是可以去看这个对应的视频教程的,所以就可以学习一下这个项目,我相信,会让我们有收获的;

1.创建项目

这个主要就是创建一个空项目:如下图所示(这个好像是和我们之前的这个创建项目的流程不太一样,选择的是这个empty project这个空项目);

image-20241219093301523
image-20241219093301523

然后就失去安装这个ignore这个插件,表示的就是我们可以通过这个插件去进行这个ignore文件的创建,这个其实是很有利于我们的这个个人的开发的

我们的这个插件就是生成这个ignore的相关的这个文件的,然后我们创建文件的时候就是可以直接进行选择的,我们这个时候就不需要进行这个手动的书写;

image-20241219172515480
image-20241219172515480

下面的这个就是我们自己新建这个ignore文件的时候的这个可以攻我们进行选择的这个末班的内容;

image-20241218212423878
image-20241218212423878

2.项目的初始化说明

先回顾一下我这两天的这个痛苦的历程:我最近总觉得没学到什么东西,因为就是这个项目的初始化很难搞把,尤其是我是用这个git对于这个项目的初始化的代码进行提交的时候,也是遇到了这个各种各样的问题,没想到,还没开始写代码,就遇到了这么多的问题,我也真的很是无语;

而且这些问题都不是技术上面的问题,可能就是因为我自己的这个项目的这个经验不足,所以会出现何种各样的为题,每一次遇到问题需要搞好久,昨天晚上就是弄了很久,但是依然没有解决问题;

我的这个博客应该是三天前,也就是周二就开始写了,但是因为这个过程中遇到的这个问题太多了,所以一直在解决问题的这个路上,我可以把自己第一次做项目的这个过程中遇到的问题简单的记录一下;

首先看下这个项目经过初始化之后的这个目录文件的结构吧:

image-20241219183721028
image-20241219183721028

首先就是这个demo-project的位置:这个就是我遇到的第一个问题,我们开始学这个内容的时候,一定要把我们的这个项目的位置放正确,否则就会出现各种各样的问题的;

这个demo-project是在这个code-gene1219这个上面右键选择我们的这个module这个内容创建的;

这个acm-template这个模版是从yupi的这个网盘上面下载的,据说这个就是一个acm代码示例,我们后面的这个项目就是在这个demo的基础上面进行改造的;

image-20241219183824654
image-20241219183824654

接下来就是这个:因为这个项目分为三个阶段,所以这个第一个我自己起名字为这个basic项目,这个是在我们的code-gene1219上面新建这个project选择的是我们的合格maven文件,接着在这个pom.xml里面导入这个相关的依赖部分;

image-20241219184053250
image-20241219184053250

在这个项目里面最让我头疼的就是这个git提交的时候遇到的这个问题,我为了这个项目,应该是创建了四个仓库(失败之后删除重建),最后才得以解决;

1)主要是这个git的嵌套的问题:需要删除这个里层的这个.git文件;

2)无法连接到这个远程仓库的问题:这个还是上面的问题,主要就是我再这两个.git的目录下面都进行了这个提交,因此出现了这个无法连接,以及这个嵌套的问题;

总觉得问题很难解决,但是好像具体是什么问题我只能列举出来上面的亮点,就是上面的这两个让我要久了好长时间,但是毕竟现在已经全部解决了;

3.第一阶段的流程

静态文件:直接复制拷贝的文件,基本上不会发生太大的这个变动,例如这个md文件和这个ignore文件;

动态文件:就是需要进行修改和操作的文件,会受到我们的认为的影响;

1)生成动静态的文件;

2)开始的单个生成,测试运行效果;

3)然后是同时生成这两个的文件,得到完整的acm代码的生成;

4)开发命令行的工具,接受我们的用户的输入,生成完整的代码;

5)打包,供用户进行使用;

4.hutool类的使用

image-20241219190843074
image-20241219190843074

5.静态文件的生成

整体的架构:这个报错主要是因为这个路径的问题;

inputpath里面的这个需要包含我们的根目录,这个file.separator就是为了获取这个分隔符,因此不同的这个操作系统上面需要对于这个分隔符进行不同程度的这个处理吧;

image-20241219192055350
image-20241219192055350

项目的效果的展示:

image-20241219192736634
image-20241219192736634

6.静态文件生成过程详解

上面的这个只是展示了我们的这个静态文件生成的这个初步的效果:

6.1工具类的使用

收先认识一下这个hutool类,这个类里面有很多的这个相关的方法,日期时间,文件读取之类的,供给我们进行使用;

我们的这个hutool这个工具类使用主要就是体现在下面的这个静态方法里面的,这个里面的参数就是我们的输入路径和输出路径,false表示的就是是不是进行覆盖;

image-20241219193311115
image-20241219193311115

其实对于这个方法的解释,我们不懂的话点进去查看就可以了:初次需要进行下载,否则这个内容我们是看不懂的,下面的这个图片就是下载之后的这个情况;

image-20241219193501437
image-20241219193501437

其实这个主要是第一次接触,我最开始听的时候也没听明白这个方法是干什么的,运行结果出来的时候我才看懂:这个就是使用这个个工具类,我们告诉这个方法,我们想要吧这个A文件复制到B这个位置,我们的第一个参数就是我们的A文件的位置,第二个参数就是我们的B位置,调用这个方法之后,我们的这个B位置就会生成这个A文件的内容,完全一样的;

6.2关于主方法的书写

这个其实就是定义变量:

第一个变量表示的获取我们的项目的根目录的位置,user.dir就是根目录的意思,gir的全程就是目录(英文里面);

input就是复制的我们的这个模板文件的地址;

output为什么是我们的根目录,就是我们的这个文件生成的新的,放到我们的这个根目录这个下面即可;

最后是使用的这个hutool里面的这个拷贝的方法;

image-20241219193900397
image-20241219193900397

6.3关于路径的说明

image-20241219194127594
image-20241219194127594

我们进行下面的这个操作:我们想要复制的是这个acm-template,因此这个位置要选对;

image-20241219194202354
image-20241219194202354

然后我们需要选择的是这个绝对路径还是相对路径呢?一定是相对路径,如果我们的这个项目进行开源的话,其他人拷贝我们的这个代码,如果我们的这个代码里面使用的这个绝对路径,其他的使用者的这个电脑里面没有这个路径就会报错的;

image-20241219194256566
image-20241219194256566

实际上我们的这个复制结果是需要进行下面的这个修改的:中间注释掉的就是我们的复制的这个结果,中间的文件分割符,就是需要使用我们的file.seperator进行这个分隔符的表示,前面的这个是我们经过运行之后的报错添加的;

如果我们仅仅是在这个复制的结果的基础上面对于这个路径分隔符进行修改们还是会报错的,因此,这个时候我么是需要进行前面加上这个根目录的路径和我们的分隔符的,下面的这个注释就是我对于这个现象的解释;

image-20241219200212180
image-20241219200212180

6.4我的感想

对于这个项目运行结果,就会在我们的这个根目录下面生成我们的这个acm的模板文件;

现在我知道了这个acm-demo的这个具体的用途,刚开始还不是很了解;

以及这个我们要做的就是这个命令行工具,和我们的这个acm模板里面的多次输入,依次输出的这个效果是很接近的;

还有就是我们为什么要这样搞,就是我们原本的这个复制粘贴不灵活,这个方法我们可以灵活的进行使用;

7.关于git的说明

刚想起来,最后补充下,就是开始创建这个项目的时候,有些文件是不需要进行上传的,但是我们的这个git默认进行了追跟踪,我们可以使用下面的这个指令取消,即让我们的这个文件不被git管理;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git rm -rf --cached .

最后的这个点一定不要少,表示的是我们的当前目录,取消跟踪,这个效果就是我们的这个idea里面的这个xml文件的颜色会发生变化,大家可以仔细观察一下这个现象,买这个也是我之前没有注意到的这个细节;

上面的这个指令是在我们的这个idea的终端操作的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
m -rf --cached .

最后的这个点一定不要少,表示的是我们的当前目录,取消跟踪,这个效果就是我们的这个idea里面的这个xml文件的颜色会发生变化,大家可以仔细观察一下这个现象,买这个也是我之前没有注意到的这个细节;

上面的这个指令是在我们的这个idea的终端操作的:

image-20241219201808215
image-20241219201808215
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
代码生成器(三)---动态文件生成实现+动静结合
下面的这个就是我们的这个model里面的和我们的这个动态模版相关的这个成员变量封装成为一个类:三个属性分别是我们的这个注释里面的作者的名字,output就是就是控制我们的这个acm里面的这个最后的输出的结果的这个说明,loop就是使用布尔值,表示的就是我们生成的这个结果里面会不会包含这个循环的过程;
阑梦清川
2025/02/24
1120
代码生成器(三)---动态文件生成实现+动静结合
欢迎使用开源的代码生成器Code-Builder
本来code-builder是专门为MyBatis Enhance来编写的一块代码生成器,不过仅仅使用到Enhance却没有什么新鲜感,所以把生成这块分离出来提供给大家使用,希望可以对提高项目研发效率提供一些帮助。
恒宇少年
2018/08/13
1K0
代码生成器(二)---动态文件生成&&FreeMarker模版引擎的使用
之前说的文件都是静态文件,也就是不需要进行调整的,写死的固定的代码,直接进行拷贝就可以了;
阑梦清川
2025/02/24
1320
代码生成器(二)---动态文件生成&&FreeMarker模版引擎的使用
通用RPC代码生成器
我们项目组需要接入多种RPC接入和工具转换流程,并且每种接入层有自己的扩展和定制需求。为了提高开发效率,我们需要一个通用的RPC代码生成器,能够支持多种RPC接入层级的代码生成,同时支持自定义插件和模板。并且自由增加自定义插件而不需要变更构建系统流程。以便提供最佳的灵活性且能支持protobuf的所有特性。
owent
2025/02/14
1210
通用RPC代码生成器
我用过很多代码生成器,还是选了他
大家好,我是鲏。如果你是一名后端开发者,那么大多数的工作一定是重复编写各种 CRUD(增删改查)代码。时间长了你会发现,这些工作不仅无趣,还会浪费你的很多时间,没有机会去做更有创造力和挑战的工作。
程序员鱼皮
2023/10/23
5550
我用过很多代码生成器,还是选了他
java 代码生成器 generator
我们在java开发中,经常要建一些常用的包、类,他们都千篇一律,没什么技术含量,于是我们想到了用代码生成器去自动生成他们,例如mapper、dao、实体类。
全栈程序员站长
2022/06/29
2K0
java 代码生成器 generator
架构师必备技能:Maven Archetype生成项目模板
Maven插件允许我们从已有项目生成一个模板项目。在项目根目录下执行mvn archetype:create-from-project命令即可将该项目生成一个项目模板,生成的项目原型被保存在路径target/generated-sources/archetype下。
码农小胖哥
2021/09/09
4.2K0
别人家的springboot代码生成器
我记得是刚毕业出来的时候,接触到好几个项目,发现每次开发后台管理模块的时候,发现都是做的事情都是一样的,做的逻辑都是一样的,只是业务不一样而已,并且在创建文件很浪费的时间,所以决定自己写一个模板代码生成器,方便项目开发,节省更多的时间写逻辑,减少bug的发生和规范的代码编写及结构。
程序员小明
2019/06/19
1.8K0
Mybatis代码生成器Mybatis-Generator使用详解
最近在做创业项目的时候因为有比较多的新需求,需要频繁基于DDL生成Mybatis适合的实体、Mapper接口和映射文件。其中,代码生成器是MyBatis Generator(MBG),用到了Mybatis-Generator-Core相关依赖,这里通过一篇文章详细地分析这个代码生成器的使用方式。本文编写的时候使用的Mybatis-Generator版本为1.4.0,其他版本没有进行过调研。
Throwable
2020/06/23
6.3K0
轻量级代码生成器加测试数据生成器
本项目是一个轻量级代码生成器,并提供多种方式来完成模拟数据的批量生产,项目架构如下:
大忽悠爱学习
2023/02/02
7890
轻量级代码生成器加测试数据生成器
.gitignore 不生效问题
最近在做一个新项目的时候,发现项目的 build/ .idea/ gradle/ .gradle/ 会在被提交的时候也提交到 gitlab 仓库中去了。所以想使用 .gitignore 文件忽略这些文件夹。
haoming1100
2020/04/25
3.8K0
快速学习-代码生成器搭建环境
4 代码生成器搭建环境 4.1 思路分析 工具的执行逻辑如下图所示: 如上分析,得知完成代码生成器需要以下几个操作: 用户填写的数据库信息,工程搭建信息需要构造到实体类对象中方便操作 数据库表
cwl_java
2020/02/11
2860
SpringBoot3+Vue3前后端分离的Java快速开发框架(Harry技术)配套代码生成器
项目简介:基于 JDK 17、Spring Boot 3、Spring Security 6、JWT、Redis、Mybatis-Plus、Knife4j等构建后端,基于Vue 3、Element-Plus 、TypeScript等构建前端的分离单体权限管理系统。
Harry技术
2025/01/13
1840
SpringBoot3+Vue3前后端分离的Java快速开发框架(Harry技术)配套代码生成器
低代码系列之代码生成器基本使用
上图并没有出现cli1-ui和cli1-permission目录 cli1-ui没有出现的原因是项目第一次创建没有对应的模型文件,虽然生成器为你提供了一个example_mode.js模型配置文件,但此文件仅仅用于示例作用。
切图仔
2022/09/08
1.1K0
低代码系列之代码生成器基本使用
静态站点生成器:makesite.py
通过在Python中编写自己的简单、轻量级、无魔法的静态站点生成器,完全控制静态网站/博客生成。对的!重新发明轮子,伙计们!
IT派
2018/07/30
2.2K0
静态站点生成器:makesite.py
基于 Hugo 搭建静态博客网站
由于本网站使用 HTTPS 对外提供服务,因此,NGINX 上需要配置好域名的证书,否则进行 HTTPS 卸载时会失败。
密码学人CipherHUB
2025/01/05
6009
基于 Hugo 搭建静态博客网站
Thrift之代码生成器Compiler原理及源码详细解析1
又很久没有写博客了,最近忙着研究GlusterFS,本来周末打算写几篇博客的,但是由于调试GlusterFS的一些新增功能就用了整整的一天,还有一天就陪老婆大人逛街去了!今晚浏览完微博发现时间还早就来博客一篇,本篇博客内容主要是前一段时间研究的Thrift的代码生成器的源码详细分析,没有具体分析语法解析,因为是工具字段生成的代码,人是没有办法阅读的—-到处都是跳转表!由于Thrift支持N多种语言,但是生成代码原理都差不多,我主要分析了C++相关代码生成。关于Thrift的使用及原理、代码网上基本上都有
技巅
2018/05/25
1.5K1
玩转字符串篇--Gradle+代码生成器=懒人必备
前言:我是爱偷懒的勤快人 我们的口号是: 能用脑子解决的绝对不靠体力,能用电脑完成的绝对不靠脑子,能懒就懒,懒出奇迹 1.1:关于代码 你眼中的代码是什么,类的逻辑关系?方法的实现?不要忽略
张风捷特烈
2020/04/30
7100
玩转字符串篇--Gradle+代码生成器=懒人必备
【Vue工程】009-Plop 代码生成器
Plop 是一个用于生成代码文件的可配置的脚手架工具。它可以帮助开发人员自动创建代码文件、模板和代码片段,从而提高开发效率。
訾博ZiBo
2025/01/06
900
springboot 集成 docsify 实现随身文档
Typora 是一款功能非常强大的 MarkDown编写工具,采用所见即所得的编辑方式,实现了即时预览的功能,Latex公式支持,具体请查看官网,目前只有平替,没有超越的MarkDown编写工具,对于本方案来讲,支持剪切图片直接保存到相对路径中,方便访问。同时也支持配置图床,需要使用PicGo搭建服务。
Kindear
2022/10/05
1.5K0
springboot 集成 docsify 实现随身文档
相关推荐
代码生成器(三)---动态文件生成实现+动静结合
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验