代码生成器后端本地运行&部署

环境准备

本地启动

设置 Maven 完成 https://www.codefather.cn/post/1836689783992958977

使用 IDEA 打开项目 yuzi-generator-maker 和 yuzi-generator-web-backend

image-20250320182956366

选择 Java 版本

  • yuzi-generator-maker 设置成 Java8

  • yuzi-generator-web-backend 设置为 Java 17

image-20241101132905013 image-20250326094208820

没有的话可以使用下面的 Download JDK

image-20241114112524129

选择 Java 17

image-20250326094026471
  • 本地没有 JDK 可以直接 Download JDK
  • 本地有 JDK 但是没识别到 Add JDK from disk 选着对应目录即可
  • 选择 Java >= 11 建议 17

初始化数据

连接本地 MySQL

image-20241030155405801

image-20241030155543228

点击 Download 下载 driver files

image-20241030155613559

输入,账号密码之后点击Test Connection 成功之后直接点击 OK

image-20241030155950071

打开 yuzi-generator-web-backend 找到根目录 sql 目录下面的 create_table.sql

如果有下面这个黄色的条 选择 Use MySQL 即可

image-20250327111427260

image-20250326142126969

全选 SQL 文件 Ctrl + A 权限文件右键 execute

image-20250326142357523

选择 Use Default Schema 运行 SQL

image-20250326142427089

执行成功之后的情况

image-20250326142533282

可以在右侧 Databae 找到创建的 my_db 数据库

image-20250326145433234

如果没有的话可以,找到对应的数据库 my_db 打勾即可

image-20250326160725623

修改 Maven 运行环境

如果是 Mac\Linux 就是 otherMavenCommand

如果是 Windows 就是 winMavenCommand

修改 yuzi-generator-maker

com.yupi.maker.generator.JarGenerate#doGenerate

Windows 最后需要是这样

image-20250512164514520

Mac 最后是这样,也就是源码里面的状态

image-20250512164331928

修改 yuzi-generator-web-backend

com.yupi.web.controller.GeneratorController#useGenerator

Windows 最后需要是这样

image-20250512170053041

Mac 最后是这样,也就是源码里面的状态

image-20250512164807696

修改源码 useGenerator 方法

com.yupi.web.controller.GeneratorController#useGenerator

源码对应的部分修改成这样

▼
java
复制代码
// 执行脚本 // 找到脚本文件所在路径 // 要注意,如果不是 windows 系统,找 generator 文件而不是 bat File scriptFile = FileUtil.loopFiles(unzipDistDir, 2, null) .stream() .filter(file -> file.isFile() && "generator".equals(file.getName())) .findFirst() .map(file -> { String os = System.getProperty("os.name").toLowerCase(); return os.contains("win") ? new File(file.getAbsolutePath() + ".bat") : file; }) .orElseThrow(RuntimeException::new);

image-20250512232941485

Install yuzi-generator-maker

Maven --> Lifecycle --> Install

image-20250326161455268

执行成功

image-20250326161538343


出现报错

image-20250216173350355

这个报错原因是因为 Java 版本的问题,通过 选择 Java 版本 章节进行设置成 Java8 即可

再次执行 install 命令 ,可以看到成功 BUILD SUCCESS

安装依赖

首先需要配置好本地 Mavne, 和阿里云镜像,要是没有配置的话可以看一下这篇文章

image-20241112134330112

然后可以在 Build 看到正在下载依赖

image-20241101132248226


如果出现这个依赖爆红就证明没有执行上面的 Install yuzi-generator-maker

image-20250326162325904

打包完成之后重新刷新依赖即可

image-20250326162513108

修改配置文件

配置文件在下面项目的 resources 目录

image-20241101133355503

  • application.yml 默认是本地运行时生效的配置
  • application-prod.yml 当在服务器指定 --spring.profiles.active=prod 才会生效,一般写线上配置,比如:线上 MySQL、Redis ...
  • application-test.yml 当在服务器指定 --spring.profiles.active=test 才会生效

1、MySQL

▼
yml
复制代码
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/my_db # yuapi 是数据库的名称 如果是远程 MySQL 例如: jdbc:mysql://192.129.11.11:3306/my_db username: root # 用户名 password: 123456 # MySQL 设置的密码

2、Redis

▼
yml
复制代码
spring: redis: database: 1 host: localhost # 如果线上改成线上 IP port: 6379 # Redis 具体运行端口,默认安装 6379 timeout: 5000 # password: 123456 # 密码,默认安装没有密码,如果服务器 Redis 有密码就修改

3、COS 相关配置

1)后端配置文件需要

▼
yml
复制代码
# 对象存储 # todo 需替换配置 cos: client: accessKey: xxx secretKey: xxx region: xxx bucket: xxx

注意:这个 **SecretId ** 就是下文中的 SecretId !

官方文档:https://cloud.tencent.com/document/product/436/56390

image-20250207143131932

2)APPID、SecretKey 、SecretId 都是 https://console.cloud.tencent.com/capi 获取的,注意 SecretKey 只能在创建的时候可见,注意保存!

image-20250207143248159

3)host、bucket、region 都在 COS 对象存储那里获取

首先需要创建存储桶,位置 https://console.cloud.tencent.com/cos/bucket

image-20241215221117299

image-20241215221153704

image-20241215221217471

4)获取 host、bucket、region 信息

位置 https://console.cloud.tencent.com/cos/bucket

image-20241215225126493

image-20241215223740852

5、XXL-Job

▼
yml
复制代码
# xxl-job 配置 xxl: job: admin: # xxl-job admin address list, such as "http://address" or "http://address01,http://address02" addresses: http://127.0.0.1:8080/xxl-job-admin # xxl-job, access token accessToken: default_token executor: # xxl-job executor appname appname: yuzi-generator-web-backend # xxl-job executor registry-address: default use address to registry , otherwise use ip:port if address is null address: # xxl-job executor server-info ip: port: 9999 # xxl-job executor log-path logpath: logs/jobhandler # xxl-job executor log-retention-days logretentiondays: 30

如果部署上线,那么就需要把 addresses 变成服务器的线上地址

本地运行

image-20250326171243971

启动报错?

因为本地没有启动 XXL-Job 导致的不用慌

image-20250326171338808

可以访问接口文档地址 http://localhost:8120/api/doc.html 验证是否启动成功

image-20250326171632284

测试功能

前端需要提前启动可以参考 https://www.codefather.cn/post/1909178634762952705

1、后端执行插入测试 SQL

image.png

把 INSERT 语句复制到 Query Console 右键选择 「Execute」

image.png

完整的 INSERT 语句

▼
sql
复制代码
INSERT INTO my_db.generator (name, description, basePackage, version, author, tags, picture, fileConfig, modelConfig, distPath, status, userId, createTime, updateTime, isDelete) VALUES ( 'acm-template-pro-generator', 'ACM 示例模板生成器', 'com.yupi', '1.0', 'yupi', '["Java"]', 'https://pic.code-nav.cn/migrate_image/f22a0535d56b9513066da1e2ea02fd7c.webp', '{"files":[{"type":"group","condition":"needGit","groupKey":"git","groupName":"开源","files":[{"inputPath":".gitignore","outputPath":".gitignore","type":"file","generateType":"static"},{"inputPath":"README.md","outputPath":"README.md","type":"file","generateType":"static"}]},{"inputPath":"src/com/yupi/acm/MainTemplate.java.ftl","outputPath":"src/com/yupi/acm/MainTemplate.java","type":"file","generateType":"dynamic"}]}', '{"models":[{"fieldName":"needGit","type":"boolean","description":"是否生成 .gitignore 文件","defaultValue":true},{"fieldName":"loop","type":"boolean","description":"是否生成循环","defaultValue":false,"abbr":"l"},{"type":"MainTemplate","description":"用于生成核心模板文件","groupKey":"mainTemplate","groupName":"核心模板","models":[{"fieldName":"author","type":"String","description":"作者注释","defaultValue":"yupi","abbr":"a"},{"fieldName":"outputText","type":"String","description":"输出信息","defaultValue":"sum = ","abbr":"o"}],"condition":"loop"}]}', '/generator_dist/1904820595580289025/7xQuIpqf-acm-template-pro-generator.zip', 0, 1904820595580289025, '2025-03-26 14:24:22', '2025-04-04 17:58:33', 0);

2、创建用户并且在数据库里面把 generator 表里面的 userId 字段改成自己登录 user 的 id 方便后续操作

user 表

image.png

generator 表

image-20250407171357143

3、找到 acm-template-pro-generator 会发现有了编辑按钮

image-20250407171459358

4、进行编辑,一直点下一步其他的不用修改,直接到「文件生成器文件」

image-20250407171720787

5、压缩 yuzi-generator-demo-projects\acm-template-pro 上传到「模板文件」一栏

image-20250407172141796

6、上传 src.zip 压缩包

image-20250407172226850

7、上传成功点击 制作 ,成功最后后端会返回一个 zip 压缩包,我们把得到的 zip 上传到 「产物包」一栏

image-20250407172306406

8、找到后端返回的 zip 大小是 4 MB 左右如果太小比如 几 kb 之类的就证明后端生成出现了问题

image-20250407172647923

9、成功之后我们点击 「提交」

image-20250407172843040

10、测试使用

image-20250407172922706 image-20250407172956672

点击生成代码之后,后端会返回一个 zip 我们进行解压查看生成是否有问题

如果出现压缩包格式错误或者生成内容不对就是后端出了问题,可以排查一下后端

image-20250407173213473

11、至此测试成功🤩🤩🤩

启动 XXL-Job (可选)

需要提前安装 Git https://pan.baidu.com/s/1c8w8FPbm-6b7vSS02dSD7w?pwd=7fz9 提取码:7fz9

1、下载 xxl-job 源码

1)方式一 通过命令行

▼
text
复制代码
git clone https://gitee.com/xuxueli0323/xxl-job.git

在想要下载的目录右键 (Win11 shift + 右键)

image-20250327104207431

直接输入命令回车即可

如果之前没有登陆过 Gitee 账号,那么会弹出一个窗口让输入 Gitee 的用户名和密码,成功登录后即可正常下载

image-20250327104255496

2)方式二 直接打开 Gitee 仓库下载源码进行解压

image-20250326171953985

image-20250326172007927

下载之后需要解压,解压之后就可以正常使用

2、使用 IDEA 打开 xxl-job 源码

image-20250327105234220

出现是否 Trust 直接点击 Trust Porject 即可

image-20250327105305551

3、等他下载依赖

如果太慢的话可以配置一下 Maven 镜像 文章

image-20250327110513469

4、创建 xxl_job 数据库 参考上面的 「初始化数据」连接数据库执行初始化 SQL

全选 SQL 文件 Ctrl + A 权限文件右键 execute

image-20250327111648915

选择 Use Default Schema 运行 SQL

image-20250327111729533

执行成功

image-20250327111847242

5、修改配置文件

对应 username 、userpassword 修改成自己本地的数据库的账号密码,url 如果是执行的官方的 SQL 一般不需要修改

image-20250327112003138

6、启动 XxlJobAdminApplication

image-20250327130910810

7、访问管理页面 http://localhost:8080/xxl-job-admin/

  • 用户名 admin
  • 密码 123456

image-20250327132049037

image-20250327131019256

8、添加执行器

image-20250327132302202

新增任务

这里的 Cron 是测试所以执行间隔比较短源码表达式是

▼
cron
复制代码
0 0 0 * * ?

image-20250327132511921

image-20250327133732544

启动执行器看看效果

image-20250327133850063

验证是否执成功,也可以查看对应日志

image-20250327134028241

制作 + 上传 JAR 包

找到右侧 Maven 选择 Lifecycle -> package 双击

image-20250216215421414


如果报错的话:

  1. 删除 target 目录(IDEA 右键删除即可),重新打包尝试
  2. Maven -> Lifecyle -> clean
  3. 退出 IDEA 在文件管理器找到该项目的 .idea 文件右键删除 ,然后重新打开 IDEA 重新走一遍流程

image-20240928104016670

image-20240928104101415

部署

后面可以参考这篇文章 『 后端部署(通用) 』

相关专栏

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
leikooo
作者分享
提到用 Rust 重写项目,很多人的第一反应往往是性能提升。以 Bun 为例,它最初主要采用 Zig 开发,后来在 2026 年发布的 v1.4 版本中将核心代码迁移到了 Rust。用 Rust 重写,性能、安全性往往是大家想要的,但是有没有想过用 Rust 重写还能发现 bug 呢? pgrust 这个项就是,他用 Rust 重新实现 PostgreSQL,保持通信协议和 SQL 方言兼容。为了确认新系统的行为和原版一致,开发者需要对着 PostgreSQL 的实际返回逐个比对。结果查着查着,有些异常不是新代码的锅,PostgreSQL 自己就是这样的。pgrust 开发者 Michael Malis 把其中几个报告给了 PostgreSQL 社区。 大概的问题: 1)SP-GiST 空间索引里有个函数判断点的方位,代码认为上、下、同一水平线三种情况已经穷尽了,末尾放了句「impossible case」兜底。结果在特定浮点边界附近,三种判断同时不成立,程序真走进了这个「不可能」的分支 2)日期格式缓存复用时,一个解析模式的标记没重置,导致同一条 JSONPath 查询在同一个会话里,换个执行顺序结果就不一样。 3)pgcrypto 的 crypt() 在某些输入下截断了多字节字符,返回的文本编码不合法。能存进去,但 pg_dump 导出时就炸了。 一个用 Rust 重写的新项目,测着测着,把运行了几十年的 PostgreSQL 里埋着的东西翻了出来。Rust 重写的价值,不一定只在跑得更快、更安全这一件事上。为了做到真正的兼容,开发者得把前人没怎么碰过的边界全走一遍,这个过程本身就在帮原版排雷。
4
ARTS 1025: 唯一字符与同构字符串、省词可能增加阅读负担与重新估算软件的实现成本
5
🎉 1024 程序员节快乐! 祝编程导航里的每一位程序员:offer 多多,薪资翻倍,面试顺利,早日拿下心仪 offer!💻
17
AST:从 Java 代码理解抽象语法树
5
原来维基百科还有专门研究「AI 味」的页面 今天偶然发现一个挺有意思的维基百科页面:https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing,专门整理 AI 写作的典型特征。 里面总结了很多我们平时经常看到的 AI 味,比如喜欢用“值得注意的是”“在当今快速发展的时代”“综上所述”,还有过度使用排比、加粗、列表,以及一些看起来很有道理,实际上没什么信息量的表达。 感觉以后可以定期翻翻这个 wiki,尤其是经常使用 AI 辅助写作的人,应该能从中发现不少所谓的 AI 味。 链接: https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing
5
下载 APP