本地开发
常用命令、目录导览、配置纪律与故障排查。
这一页回答三件事:命令怎么敲、代码在哪、出问题先看哪里。
常用命令
| 命令 | 作用 |
|---|---|
./gradlew bootRun | 启动应用(Liquibase 自动建表 + 种子数据) |
./gradlew build | 编译 + 测试 + 架构守护 + 契约一致性,一次跑完 |
./gradlew test | 只跑测试 |
./gradlew generateModule -Pname=demo | 骨架生成器:产出模块目录、迁移脚本与测试骨架 |
./gradlew bootJar | 打出可运行的 jar(build/libs/) |
说明:一次 ./gradlew build 会同时跑完编译、测试、架构守护、契约一致性与格式化校验——不需要分别执行。
目录导览
minimao/
├── src/main/java/cn/minimao/
│ ├── app/<module>/{controller,service,dto,vo,convert}
│ ├── domain/handler/<module>/{cmd}
│ ├── infra/<module>/{model,mapper,repository,query}
│ ├── data/ # 查询与写入底座
│ ├── common/ # 上下文、线程、异常
│ └── config/ # 框架装配
├── src/main/resources/
│ ├── db/changelog/ # Liquibase 迁移脚本(唯一建表入口)
│ ├── mapper/ # 手写 SQL
│ └── i18n/ # 三语错误文案
└── src/test/java/cn/minimao/{arch,behavior,support}
配置纪律
- 新增配置项必须在
application.yml与.env.example两处都登记,缺一处构建失败。 - 真实凭据、内网地址、授权码一律不入库;占位符用
<REQUIRED>。 - 密钥一律环境变量注入,
.env不进版本库。
调试与日志
- 每个响应体都带
traceId,前端与后端排查以此为唯一线索。 - 日志里
[]表示这一行不在任何请求链路内(启动期、非 HTTP 入口),不是链路丢失。 - 接口访问日志只有一个打印点,且手机号、密码类字段默认脱敏。
故障排查
| 现象 | 先看这里 |
|---|---|
| 端口被占用 | 改 server.port 或停掉占用进程;不要改框架默认行为 |
| 启动报迁移失败 | 看 db/changelog 是否有人修改了已执行的 changeset |
| 分页插件不可用 | 是否漏了 mybatis-plus-jsqlparser(3.5.9 起拆包) |
| 无权限时返回「系统繁忙」 | 错误码映射是否补齐;无权限应返回固定权限错误码,不该落到兜底异常 |
| traceId 为空 | 确认是否非 HTTP 入口(定时任务 / 消息消费 / 启动期) |
最后更新 2026-10-09编辑此页 →