编程导航代码生成器共享平台话题讨论

代码生成器共享平台

50 参与
分享

快来分享你的内容吧~

点击登录,快来和大家讨论吧~
表情
图片
话题
打卡
综合
交流
文章
问答

大佬们,我这个点了制作,这个压缩包直接损坏是什么情况吖,😭,我是直接用的鱼总的代码

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

# 环境准备 + [代码生成器前端源码](https://www.codefather.cn/course/1790980795074654209/section/1790994568233660418) + node >= **18** 推荐使用 [NVM 安装](https://www.codefather.cn/post/1823595688926167041) + WebStorm # 本地运行 ## 安装依赖 1、使用 WebStorm 打开(VSCode 也是可以的) 用 WebStorm 打开前端源码 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/tYau0IprfKvA4NI0.webp" alt="image-20250402111925848" width="100%" /> > 回弹出一个是否相信,选择相信即可 2、找到 `Terminal` 选项 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/BOHURzymXmvYAsGT.webp" alt="image-20250402112113363" width="100%" /> --- 如果没有看到看这里有没有 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/yOc89guqYcPTpAyJ.webp" alt="image-20241114101254432" width="471px" /> 还是没有的话找到 `Settings` -> `plugins` -> `Terminal` <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/DX9CxpI51ALlrGJs.webp" alt="image-20241114101344618" width="334px" /> <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/7yyNKv2X9xVdserL.webp" alt="image-20241114101433358" width="100%" /> --- 3、执行 ```shell npm install --force ``` <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/2fdT3J9WOZFCK1fu.webp" alt="image-20250402112200914" width="100%" /> 最后执行效果: <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/qU4h7aXN40mmBWkS.webp" alt="image-20250402112351840" width="100%" /> ## 运行前端 找到根目录下的 `pakage.json` <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/Pc74UOzHYAoMEIub.webp" alt="image-20250402113008780" width="100%" /> <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/ml5wn3w8CfS86EHX.webp" alt="image-20250402113224492" width="100%" /> > Run dev 就是正常启动 > > 如果是想要 debug 的话建议可以看看 > > + WebStorm Debug 官方文档: https://www.jetbrains.com/help/webstorm/react.html#react_debug_from_tw > + VSCode Debug 官方文档 https://code.visualstudio.com/docs/nodejs/reactjs-tutorial#_debugging-react 启动成功 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/zeJPqHi7EAg3N3NA.webp" alt="image-20250402113412582" width="100%" /> 访问 http://localhost:8000 可以看到 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/NN3wo96UT89gxo73.webp" alt="image-20250402113904703" width="100%" /> --- pakage.json ``` "scripts": { "dev": "vite", "pure-build": "vite build", "build": "run-p type-check \"build-only {@}\" --", "openapi": "node openapi.config.js", "preview": "vite preview", "build-only": "vite build", "type-check": "vue-tsc --build", "lint": "eslint . --fix", "format": "prettier --write src/" }, ``` 1. dev 开发化境启动,会**热更新**(如果有修改会立刻体现) 3. buid 构建模式,会生成 dist 文件方便前端部署 ## 修改请求路径 本地运行就修改 `src/constants/index.ts` 里面的 `BACKEND_HOST_LOCAL` 修改对应的值变成后端实际运行的地址即可,如果是线上部署就修改 `BACKEND_HOST_PROD` <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/J2ryvRnx3ooX3Uaz.webp" alt="image-20250402114046528" width="100%" /> 本地就使用 localhost 部署到服务器上就修改成 IP 或者域名 + http://localhost:8101 + http://192.122.11.11:8101 + http://leikooo.com:8101 域名相当于平替 IP + http://leikooo.com 没有端口?别慌 `http` 默认请求`80` 端口只需要在 `Nginx` 进行`反向代理`即可 + https://leikooo.com 和上面的区别?这个是 `https` 安全的连接,默认端口也变成 `443` ## 测试功能 > 后端需要提前启动可以参考 https://www.codefather.cn/post/1905134703878529025 1、后端执行插入测试 SQL <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/gQj0DKG6qMNte17f.webp" alt="image.png" width="538px" /> 把 INSERT 语句复制到 Query Console 右键选择 「Execute」 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/WHFOQK3ZkLA3Geby.webp" alt="image.png" width="100%" /> 完整的 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 表 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/7fRXyLAbtETvbtVl.webp" alt="image.png" width="100%" /> generator 表 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/Bhgg2KfoUN9ROgiG.webp" alt="image-20250407171357143" width="326px" /> 3、找到 acm-template-pro-generator 会发现有了编辑按钮 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/p9vJ3f2uyvn1xZQN.webp" alt="image-20250407171459358" width="100%" /> 4、进行编辑,一直点下一步其他的不用修改,直接到「文件生成器文件」 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/aVjKKUVS1OmfE5ib.webp" alt="image-20250407171720787" width="100%" /> 5、压缩 `yuzi-generator-demo-projects\acm-template-pro` 上传到「模板文件」一栏 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/2TQ1pQ7hZshQdCUb.webp" alt="image-20250407172141796" width="100%" /> 6、上传 src.zip 压缩包 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/fOGnuiA86rY5XSOk.webp" alt="image-20250407172226850" width="100%" /> 7、上传成功点击 制作 ,成功最后后端会返回一个 zip 压缩包,我们把得到的 zip 上传到 「产物包」一栏 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/52Q5ndcfyOucxI2C.webp" alt="image-20250407172306406" width="100%" /> 8、找到后端返回的 zip 大小是 4 MB 左右如果太小比如 几 kb 之类的就证明后端生成出现了问题 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/iWkKLZ4dE8tbht86.webp" alt="image-20250407172647923" width="100%" /> 9、成功之后我们点击 「提交」 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/oNIrYyWcoxhbWmSx.webp" alt="image-20250407172843040" width="100%" /> 10、测试使用 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/sTnXROMa1GbGSqEw.webp" alt="image-20250407172922706" width="100%" /> <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/TWMrQUdHEpLdePXw.webp" alt="image-20250407172956672" width="100%" /> 点击生成代码之后,后端会返回一个 zip 我们进行解压查看生成是否有问题 > 如果出现压缩包格式错误或者生成内容不对就是后端出了问题,可以排查一下后端 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/VMjGNQhFL0rk2qjW.webp" alt="image-20250407173213473" width="614px" /> 11、至此测试成功🤩🤩🤩 ## 打包 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/HRcPtyfYZ7KH7JUh.webp" alt="image-20250402114237645" width="100%" /> build 成功 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/z0ipENdczn9Hai8G.webp" alt="image-20250402114306762" width="100%" /> 可以看到出现了 dist 目录 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/X4zYZGMNGAXQSOi1.webp" alt="image-20250402114333676" width="437px" /> --- 如果没有出现 dist 目录,那么就按照下面进行操作一下,就可以看到了 File -> Reload All from Disk <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/X7n9YlvWvLPYxpTl.webp" alt="image-20250211195133450" width="362px" /> # 部署 [『 前端部署教程(通用) 』](https://www.codefather.cn/post/1836710450264096769)

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

## 环境准备 + [代码生成器共享源码](https://www.codefather.cn/course/1790980795074654209/section/1790994568233660418?type=) + IDEA [你懂的教程](https://www.codefather.cn/essay/1837021571340648449) + Redis [网盘安装包](https://pan.baidu.com/s/1-QhCv0Crg2zvwG3ODxvv-Q) 提取码: vmty + MySQL5.7 [网盘安装包](https://pan.baidu.com/s/1uIDAzBtxBXHq8YZOfhlI9w?pwd=bbr5) 提取码:bbr5 + MySQL8.0 [网盘安装包](https://pan.baidu.com/s/1O6TrRCpb66A5hdgy0EY9HA?pwd=g17s)提取码:g17s + MySQL [安装指南](https://zhuanlan.zhihu.com/p/37152572) + MySQL [官方下载链接](https://dev.mysql.com/downloads/windows/installer/5.7.html) + XXL-job [官方 Git 地址](https://gitee.com/xuxueli0323/xxl-job) ## 本地启动 > 设置 Maven 完成 https://www.codefather.cn/post/1836689783992958977 使用 IDEA 打开项目 `yuzi-generator-maker` 和 `yuzi-generator-web-backend` <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/eYOhbUxiNopRSQj6.webp" alt="image-20250320182956366" width="100%" /> ### 选择 Java 版本 + `yuzi-generator-maker` 设置成 Java8 + `yuzi-generator-web-backend` 设置为 Java 17 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/KIh49G7Obsho3IDA.webp" alt="image-20241101132905013" width="398px" /> <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/W5f7rWczGECWBRJN.webp" alt="image-20250326094208820" width="100%" /> 没有的话可以使用下面的 `Download JDK` <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/CJTbOZvF6V6ZWgIg.webp" alt="image-20241114112524129" width="100%" /> 选择 Java 17 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/nnUNgwSQgXuNwa6b.webp" alt="image-20250326094026471" width="100%" /> + 本地没有 JDK 可以直接 `Download JDK` + 本地有 JDK 但是没识别到 `Add JDK from disk` 选着对应目录即可 + 选择 Java >= 11 建议 17 ### 初始化数据 连接本地 MySQL ![image-20241030155405801](https://pic.code-nav.cn/post_picture/1608460212774109186/fxBDql4BhJvmdMtt.webp) ![image-20241030155543228](https://pic.code-nav.cn/post_picture/1608460212774109186/A60q0Hury171gDaR.webp) > 点击 Download 下载 driver files ![image-20241030155613559](https://pic.code-nav.cn/post_picture/1608460212774109186/IyxGapDK2x3VmIqe.webp) 输入,账号密码之后点击`Test Connection` 成功之后直接点击 `OK` ![image-20241030155950071](https://pic.code-nav.cn/post_picture/1608460212774109186/dD7DWPeUY1IamNk1.webp) 打开 `yuzi-generator-web-backend` 找到根目录 `sql` 目录下面的 `create_table.sql` > 如果有下面这个黄色的条 **选择 Use MySQL 即可** ![image-20250327111427260](https://pic.code-nav.cn/post_picture/1608460212774109186/Voty4eO8I0JqLNAw.webp) ![image-20250326142126969](https://pic.code-nav.cn/post_picture/1608460212774109186/IW174CPPxT6NBi5p.webp) 全选 SQL 文件 Ctrl + A 权限文件右键 execute ![image-20250326142357523](https://pic.code-nav.cn/post_picture/1608460212774109186/27gvnB5gjskuAa9k.webp) 选择 Use Default Schema 运行 SQL ![image-20250326142427089](https://pic.code-nav.cn/post_picture/1608460212774109186/xky5KMJzHgRg3VjL.webp) 执行成功之后的情况 ![image-20250326142533282](https://pic.code-nav.cn/post_picture/1608460212774109186/wTTKR04nmx6McDIP.webp) 可以在右侧 Databae 找到创建的 my_db 数据库 ![image-20250326145433234](https://pic.code-nav.cn/post_picture/1608460212774109186/QEryLP5PV1cB3Fal.webp) 如果没有的话可以,找到对应的数据库 my_db 打勾即可 ![image-20250326160725623](https://pic.code-nav.cn/post_picture/1608460212774109186/0VIJZt1necGpEqKL.webp) ### 修改 Maven 运行环境 > 如果是 Mac\Linux 就是 **otherMavenCommand** > > 如果是 Windows 就是 **winMavenCommand** #### 修改 yuzi-generator-maker com.yupi.maker.generator.JarGenerate#doGenerate Windows 最后需要是这样 ![image-20250512164514520](https://pic.code-nav.cn/post_picture/1608460212774109186/KgBk92XvZoMJhIUC.webp) Mac 最后是这样,也就是源码里面的状态 ![image-20250512164331928](https://pic.code-nav.cn/post_picture/1608460212774109186/e2qqo1YyHmOEhI7S.webp) #### 修改 yuzi-generator-web-backend com.yupi.web.controller.GeneratorController#useGenerator Windows 最后需要是这样 ![image-20250512170053041](https://pic.code-nav.cn/post_picture/1608460212774109186/Fc6drziDG7jMRm8L.webp) Mac 最后是这样,也就是源码里面的状态 ![image-20250512164807696](https://pic.code-nav.cn/post_picture/1608460212774109186/6Fl4891fwPMRMSPw.webp) #### 修改源码 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](https://pic.code-nav.cn/post_picture/1608460212774109186/Qbi8Pet0KdQURX9R.webp) ### Install yuzi-generator-maker Maven --> Lifecycle --> Install ![image-20250326161455268](https://pic.code-nav.cn/post_picture/1608460212774109186/XI3cbOmYm53kYHgX.webp) 执行成功 ![image-20250326161538343](https://pic.code-nav.cn/post_picture/1608460212774109186/QbvmC5tPTWXazHBM.webp) --- 出现报错 ![image-20250216173350355](https://pic.code-nav.cn/post_picture/1608460212774109186/vHI1QyRsHjYAFMvS.webp) > 这个报错原因是因为 `Java` 版本的问题,通过 *选择 Java 版本* 章节进行设置成 Java8 即可 再次执行 `install` 命令 ,可以看到成功 BUILD SUCCESS ### 安装依赖 首先需要配置好本地 `Mavne`, 和`阿里云镜像`,要是没有配置的话可以看一下这篇[文章](https://www.codefather.cn/post/1836689783992958977) ![image-20241112134330112](https://pic.code-nav.cn/post_picture/1608460212774109186/xDj7BRgBGNhtImxh.webp) 然后可以在 Build 看到正在下载依赖 ![image-20241101132248226](https://pic.code-nav.cn/post_picture/1608460212774109186/R0ssZvOgEViXIPTg.webp) --- 如果出现这个依赖爆红就证明没有执行上面的 `Install yuzi-generator-maker` ![image-20250326162325904](https://pic.code-nav.cn/post_picture/1608460212774109186/fQQSAaiEqvyBT7kO.webp) 打包完成之后重新刷新依赖即可 ![image-20250326162513108](https://pic.code-nav.cn/post_picture/1608460212774109186/3RSFknjihzxo2arn.webp) ### 修改配置文件 配置文件在下面项目的 `resources` 目录 ![image-20241101133355503](https://pic.code-nav.cn/post_picture/1608460212774109186/lG4cCx5wcek4gAFS.webp) + 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](https://pic.code-nav.cn/post_picture/1608460212774109186/pHynPvwMjDxdC9yc.webp) 2)APPID、SecretKey 、SecretId 都是 https://console.cloud.tencent.com/capi 获取的,注意 SecretKey **只能在创建的时候可见**,注意保存! ![image-20250207143248159](https://pic.code-nav.cn/post_picture/1608460212774109186/WlWo1LrrYFOPXRyN.webp) 3)host、bucket、region 都在 COS 对象存储那里获取 首先需要创建存储桶,位置 https://console.cloud.tencent.com/cos/bucket ![image-20241215221117299](https://pic.code-nav.cn/post_picture/1608460212774109186/pq5uKADsrPgcQtXu.webp) ![image-20241215221153704](https://pic.code-nav.cn/post_picture/1608460212774109186/eHx1cBJq8LTvtOmA.webp) ![image-20241215221217471](https://pic.code-nav.cn/post_picture/1608460212774109186/pLtZoCjaEMgyUOa8.webp) 4)获取 host、bucket、region 信息 位置 https://console.cloud.tencent.com/cos/bucket ![image-20241215225126493](https://pic.code-nav.cn/post_picture/1608460212774109186/d43wqYcOinIao6Qm.webp) ![image-20241215223740852](https://pic.code-nav.cn/post_picture/1608460212774109186/gZyF7EdrRM9RY1Kx.webp) 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](https://pic.code-nav.cn/post_picture/1608460212774109186/njGa1Vq8B3z3DhCR.webp) 启动报错? > 因为本地没有启动 XXL-Job 导致的不用慌 ![image-20250326171338808](https://pic.code-nav.cn/post_picture/1608460212774109186/5kEVaToUOYG0OrLb.webp) 可以访问接口文档地址 http://localhost:8120/api/doc.html 验证是否启动成功 ![image-20250326171632284](https://pic.code-nav.cn/post_picture/1608460212774109186/CKezUDukoDtSS9we.webp) ### 测试功能 > 前端需要提前启动可以参考 https://www.codefather.cn/post/1909178634762952705 1、后端执行插入测试 SQL <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/gQj0DKG6qMNte17f.webp" alt="image.png" width="538px" /> 把 INSERT 语句复制到 Query Console 右键选择 「Execute」 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/WHFOQK3ZkLA3Geby.webp" alt="image.png" width="100%" /> 完整的 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 表 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/7fRXyLAbtETvbtVl.webp" alt="image.png" width="100%" /> generator 表 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/Bhgg2KfoUN9ROgiG.webp" alt="image-20250407171357143" width="326px" /> 3、找到 acm-template-pro-generator 会发现有了编辑按钮 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/p9vJ3f2uyvn1xZQN.webp" alt="image-20250407171459358" width="100%" /> 4、进行编辑,一直点下一步其他的不用修改,直接到「文件生成器文件」 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/aVjKKUVS1OmfE5ib.webp" alt="image-20250407171720787" width="100%" /> 5、压缩 `yuzi-generator-demo-projects\acm-template-pro` 上传到「模板文件」一栏 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/2TQ1pQ7hZshQdCUb.webp" alt="image-20250407172141796" width="100%" /> 6、上传 src.zip 压缩包 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/fOGnuiA86rY5XSOk.webp" alt="image-20250407172226850" width="100%" /> 7、上传成功点击 制作 ,成功最后后端会返回一个 zip 压缩包,我们把得到的 zip 上传到 「产物包」一栏 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/52Q5ndcfyOucxI2C.webp" alt="image-20250407172306406" width="100%" /> 8、找到后端返回的 zip 大小是 4 MB 左右如果太小比如 几 kb 之类的就证明后端生成出现了问题 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/iWkKLZ4dE8tbht86.webp" alt="image-20250407172647923" width="100%" /> 9、成功之后我们点击 「提交」 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/oNIrYyWcoxhbWmSx.webp" alt="image-20250407172843040" width="100%" /> 10、测试使用 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/sTnXROMa1GbGSqEw.webp" alt="image-20250407172922706" width="100%" /> <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/TWMrQUdHEpLdePXw.webp" alt="image-20250407172956672" width="100%" /> 点击生成代码之后,后端会返回一个 zip 我们进行解压查看生成是否有问题 > 如果出现压缩包格式错误或者生成内容不对就是后端出了问题,可以排查一下后端 <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/VMjGNQhFL0rk2qjW.webp" alt="image-20250407173213473" width="614px" /> 11、至此测试成功🤩🤩🤩 ### 启动 XXL-Job (可选) > 需要提前安装 Git https://pan.baidu.com/s/1c8w8FPbm-6b7vSS02dSD7w?pwd=7fz9 提取码:7fz9 1、下载 xxl-job 源码 1)方式一 通过命令行 ``` git clone https://gitee.com/xuxueli0323/xxl-job.git ``` 在想要下载的目录右键 (Win11 shift + 右键) ![image-20250327104207431](https://pic.code-nav.cn/post_picture/1608460212774109186/YmK03uYNtnwIH0jT.webp) 直接输入命令回车即可 > 如果之前没有登陆过 Gitee 账号,那么会弹出一个窗口让输入 Gitee 的用户名和密码,成功登录后即可正常下载 ![image-20250327104255496](https://pic.code-nav.cn/post_picture/1608460212774109186/0pyALyggLFycMody.webp) 2)方式二 直接打开 [Gitee 仓库](https://gitee.com/xuxueli0323/xxl-job)下载源码进行解压 ![image-20250326171953985](https://pic.code-nav.cn/post_picture/1608460212774109186/2G8uho3ZB6BAY96l.webp) ![image-20250326172007927](https://pic.code-nav.cn/post_picture/1608460212774109186/8ONq19jVtHJ7OGBy.webp) 下载之后需要解压,解压之后就可以正常使用 2、使用 IDEA 打开 xxl-job 源码 ![image-20250327105234220](https://pic.code-nav.cn/post_picture/1608460212774109186/bARgytNb44ej6f62.webp) 出现是否 Trust 直接点击 `Trust Porject` 即可 ![image-20250327105305551](https://pic.code-nav.cn/post_picture/1608460212774109186/CZ1RNmtw3n4FZ6B0.webp) 3、等他下载依赖 如果太慢的话可以配置一下 Maven 镜像 [文章](https://www.codefather.cn/post/1836689783992958977) ![image-20250327110513469](https://pic.code-nav.cn/post_picture/1608460212774109186/nEcmyBq0y20PFKhK.webp) 4、创建 `xxl_job` 数据库 参考上面的 「初始化数据」连接数据库执行初始化 SQL 全选 SQL 文件 Ctrl + A 权限文件右键 execute ![image-20250327111648915](https://pic.code-nav.cn/post_picture/1608460212774109186/Os8EQ6BFQr8bUqmF.webp) 选择 Use Default Schema 运行 SQL ![image-20250327111729533](https://pic.code-nav.cn/post_picture/1608460212774109186/XZuugvtXyxjpy9NF.webp) 执行成功 ![image-20250327111847242](https://pic.code-nav.cn/post_picture/1608460212774109186/yYtaSwNGPqg4fQAr.webp) 5、修改配置文件 对应 username 、userpassword 修改成自己本地的数据库的账号密码,url 如果是执行的官方的 SQL 一般不需要修改 ![image-20250327112003138](https://pic.code-nav.cn/post_picture/1608460212774109186/LHMlOs9E7jelMl4d.webp) 6、启动 `XxlJobAdminApplication` <img src="https://pic.code-nav.cn/post_picture/1608460212774109186/V6dgr38UtJ5VzBFO.webp" alt="image-20250327130910810" width="100%" /> 7、访问管理页面 http://localhost:8080/xxl-job-admin/ + 用户名 admin + 密码 123456 ![image-20250327132049037](https://pic.code-nav.cn/post_picture/1608460212774109186/0QOU7uvHjnZ0KmZU.webp) ![image-20250327131019256](https://pic.code-nav.cn/post_picture/1608460212774109186/5OzxnOZaom4RsqI4.webp) 8、添加执行器 ![image-20250327132302202](https://pic.code-nav.cn/post_picture/1608460212774109186/nLYjasVsKy2Xh5TT.webp) 新增任务 > 这里的 **Cron** 是测试所以执行间隔比较短源码表达式是 > > ```cron > 0 0 0 * * ? > ``` ![image-20250327132511921](https://pic.code-nav.cn/post_picture/1608460212774109186/WtM1rkReIeiUmyo8.webp) ![image-20250327133732544](https://pic.code-nav.cn/post_picture/1608460212774109186/2an0eesUwRVGLNX9.webp) 启动执行器看看效果 ![image-20250327133850063](https://pic.code-nav.cn/post_picture/1608460212774109186/39DwvEQh7L0S87WC.webp) 验证是否执成功,也可以查看对应日志 ![image-20250327134028241](https://pic.code-nav.cn/post_picture/1608460212774109186/r0O2BO98wWK8A3Se.webp) ### 制作 + 上传 JAR 包 找到右侧 Maven 选择 Lifecycle -> package 双击 ![image-20250216215421414](https://pic.code-nav.cn/post_picture/1608460212774109186/yrivlgym5yTDPmp6.webp) --- 如果报错的话: 1. 删除 `target` 目录(IDEA 右键删除即可),重新打包尝试 2. Maven -> Lifecyle -> clean 3. 退出 IDEA 在`文件管理器`找到该项目的 `.idea` 文件右键删除 ,然后重新打开 IDEA 重新走一遍流程 ![image-20240928104016670](https://pic.code-nav.cn/post_picture/1608460212774109186/GeFXYWFqXQpEIfws.webp) ![image-20240928104101415](https://pic.code-nav.cn/post_picture/1608460212774109186/dw0i5rJwqNgrUelI.webp) ## 部署 后面可以参考这篇文章 [『 后端部署(通用) 』](https://www.codefather.cn/post/1837499403858690049)

代码生成器共享平台面试题求回答

面试被提问项目中分组的作用和实现过程怎么回答呢,感谢各位大佬

最近在写代码生成器共享平台,下面这张图片是我画的一个整个项目的全景图

代码生成器项目中,我的生成jar包、封装脚本的程序是这样的: // 构建 jar 包部分 // 构建 jar 包 JarGenerator.doGenerate(outputPath); // 封装脚本 String shellOutputFilePath = outputPath + File.separator + "generator"; String jarName = String.format("%s-%s-jar-with-dependencies.jar", meta.getName(), meta.getVersion()); System.out.println(jarName); String jarPath = "target/" + jarName; System.out.println(jarPath); ScriptGenerator.doGenerate(shellOutputFilePath, jarPath); 结果生成的jar包,输入./generator --help时报 ./generator : 无法将“./generator”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确 ,然后再试一次。 所在位置 行:1 字符: 1 这是怎么回事呢?昨天新安装了Maven v3.9.5,生成的jar包名称也跟generator脚本文件中jar包名称还不一致

结合星球的代码执行器修改了代码沙箱,欢迎pr、issue、star:https://github.com/cjvox/voxoj-sandbox

我的新书出版啦!限时送签名版

大家好,我是程序员鱼皮,我的新书《编程导航,全栈项目实战课》出版啦! 新书发售第一天,就拿到了京东 **全图书品类的第一** ,这离不开粉丝朋友们的大力支持,真的非常感谢大家!图书就要加印了,剩下少量签名版,需要的小伙伴可以抓紧下手,今天还是能拿到签名版的哦~ <img src="https://pic.code-nav.cn/migrate_image/4e5ce32c723cb47da3b28ab7e444023c.webp" alt="" width="100%" /> **今天,新书开启了最大力度的优惠,440 多页的干货、精美双色印刷,原价 118 元,限时领券只要 64 元!前 5000 本下单还是亲笔签名版哦~ 快来抄底!** 点击领取优惠券下单:https://u.jd.com/KgPnVw4 下面用文字快速带大家了解这本书。 ## 为什么要写这本书? 创作这本书的目标是帮大家 **学会独立做项目、提高求职竞争力** 并找到好工作。 很多同学觉得学编程难、做项目难、找工作更难。为什么难?因为企业需要的是有项目经验、能干活的人,然而学校并不会教你怎么获得项目经验,就导致很多同学毕业即失业。 怎么破局呢? 其实很简单,就是 **自己做项目**。想学好编程,就必须要多实践,而做项目是最直接的实践方式,有一台电脑就够了。每实现一个功能、每解决一个 Bug,你都是在打怪升级,提升了问题解决能力。 我很幸运,在大一的时候就悟到了这点。从大学就开始带队做项目、带工作室做网站、参加项目竞赛、在多家企业实习等等,这也是我 **投递大厂百投百中** 的主要原因,所以我深知做项目的重要性。 如今,作为一名经验丰富的程序员 + 自媒体博主 + 编程讲师 + 创业者,我也一直在带朋友们手把手做出项目,也在持续开源和分享项目,因为讲解细致、通俗易懂,得到了很多朋友的好评和关注。这些是我出版项目教程类书籍的底气,我也希望把自己多年来学编程做项目的经验方法分享给大家。 于是,《编程导航,全栈项目实战课》来了!这本书主讲的企业级代码生成器平台项目,正是之前我在编程导航发布的原创项目,因广受好评,所以我在原教程的基础上补充了大量知识点,并优化细节、反复打磨,专门作为书籍出版,希望能帮更多同学找到好工作。 读完这本书后,你会发现,做好项目、找工作并不难! <img src="https://pic.code-nav.cn/migrate_image/a051358068b81c1435b05206fa78d0f0.webp" alt="" width="100%" /> ## 书籍介绍,有哪些亮点? 首先,这本书采用精美双色印刷、配图丰富,有 440 多页,分量十足! <img src="https://pic.code-nav.cn/migrate_image/19171c095255385b1580fd6ed48f5132.webp" alt="" width="100%" /> 全书分为 3 大项目阶段、15 个章节,完全遵循真实的企业开发流程,涵盖需求分析、技术选型、方案设计、项目搭建、前后端编码实现、测试排错、项目优化再到部署上线的全过程,从 0 到 1 **循序渐进** 地带你搞定企业级代码生成器平台项目。 <img src="https://pic.code-nav.cn/migrate_image/13b5989f3f20cde65f28d07252dfaa18.webp" alt="项目主页展示" width="100%" /> 这本《编程导航,全栈项目实战课》相比市面上其他 IT 教程书籍,不仅技术主流新颖、讲解通俗易懂,还融入了丰富的企业开发经验、系统设计方法、项目优化技巧、甚至是产品思维,希望帮助大家成为优秀的独立开发者和项目负责人,让自学编程变得轻松自如,求职之路畅通无阻。 <img src="https://pic.code-nav.cn/migrate_image/e1f83e8a59978b1118705d73a13394ec.webp" alt="" width="100%" /> 此外,随书还附赠项目的 **视频教程、答疑服务、简历写法和面试题解一条龙服务**,学完直接写满简历、突击面试,学习过程中有不懂的还能直接问我,这不就相当于有一个导师 ~~(保姆)~~ 在一步步指引你学会技术、写好代码、做出项目么? <img src="https://pic.code-nav.cn/migrate_image/a9ef2b9974827107572fe7129741d39f.webp" alt="项目配套资料" width="100%" /> ## 适合人群,看完本书的收获? 如果你是一名编程学习者,想要找到软件开发相关的工作,通过本书可以学到真实企业项目的开发流程、经验技巧,尤其对于没有工作经验的同学来说,可以快速提升自己的编程能力、架构设计能力、系统分析优化能力、以及解决问题的能力,这些都是帮你提升求职竞争力的关键。 如果你是一名编程爱好者或创业者,想要独立开发项目或产品,通过本书可以学到快速开发企业级项目的方法工具、经验技巧,并快速上线项目。 <img src="https://pic.code-nav.cn/migrate_image/65d76724f37fd868fc6a012f46ec35c5.webp" alt="真实好评" width="100%" /> ## 最后 最后,新书定价 118 元,但是我帮大家争取到了最大力度的优惠,限时领券只要 64 元! 优惠暂时还不知道能持续多久,想入手的朋友建议趁早,而且前 5000 本下单还是亲笔签名版哦~ 点击领取优惠券下单:https://u.jd.com/KgPnVw4 ~~单从书的厚度来说,拿来垫桌子也是不错的啊!~~ 购买之后,一定要学起来,不要拿它来垫桌子哟!

在代码生成器项目中,前端输入boolean类型值,后端接收为String类型,导致maven报错无法转换。

### Bug 描述 在代码生成器项目中,我在前端输入了创建ACM 模板项目生成器的信息后,值是boolean类型,但是后端接受到的是Sting的值,会生成下面图片的代码,导致maven报无法将string转化为boolean类型的错误,不知道该怎么解决? <img src="https://pic.code-nav.cn/post_picture/1791280834896506881/S4t7ab7N-image.webp" alt="image.png" width="100%" /> 下面可以看出前端返回的结果: <img src="https://pic.code-nav.cn/post_picture/1791280834896506881/qzVVlwOI-image.webp" alt="image.png" width="100%" /> ### 复现时机 在代码生成器前端手动输入如下图中的信息: <img src="https://pic.code-nav.cn/post_picture/1791280834896506881/EKSjxAzm-image.webp" alt="image.png" width="100%" /> ### 期望结果 不应该是String类型,即去掉双引号。 <img src="https://pic.code-nav.cn/post_picture/1791280834896506881/GXxuKGZ2-image.webp" alt="image.png" width="703px" /> ### 错误信息 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project acm-template-pro-generator: Compilation failure: Compilation failure: [ERROR] /D:/Codes/chen-generator-web-backend/.temp/make/1817890279855607808s1rb0i/generated/acm-template-pro-generator/src/main/java/com/chen/cli/command/GenerateCommand.java:[19,33] �����ݵ�����: java.lang.String�޷�ת��Ϊboolean [ERROR] /D:/Codes/chen-generator-web-backend/.temp/make/1817890279855607808s1rb0i/generated/acm-template-pro-generator/src/main/java/com/chen/cli/command/GenerateCommand.java:[22,30] �����ݵ�����: java.lang.String�޷�ת��Ϊboolean [ERROR] /D:/Codes/chen-generator-web-backend/.temp/make/1817890279855607808s1rb0i/generated/acm-template-pro-generator/src/main/java/com/chen/model/DataModel.java:[15,32] �����ݵ�����: java.lang.String�޷�ת��Ϊboolean [ERROR] /D:/Codes/chen-generator-web-backend/.temp/make/1817890279855607808s1rb0i/generated/acm-template-pro-generator/src/main/java/com/chen/model/DataModel.java:[20,29] �����ݵ�����: java.lang.String�޷�ת��Ϊboolean [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException 命令执行结束,退出码:1 ### 自己的思路和解决方案 阅读鱼皮的视频,发现鱼皮老师是在数据库中设置的信息,没有手动输入。也阅读了其他同学的笔记,没有遇到我都问题,可能是我前端和后端哪里的配置有问题,我的代码是来自编程导航代码生成器课程中的百度网盘。 ### 相关资料 代码生成器课程。

#求助 在代码生成器项目中,我在前端输入了创建ACM 模板项目生成器的信息后,值是boolean类型,但是后端接受到的是Sting的值,会出现下面的问题: 导致maven报无法将string转化为boolean类型的错误,不知道该怎么解决?

下载 APP