Repository navigation
🧪 test(generator): 增加 Java 生成代码编译 smoke - #123
Conversation
里程碑 1:本地编译实验完成结论。 提交 实验输入与取舍。 fixture 选用 环境与命令。 Windows 11 x86_64;Temurin $env:PYTHONPATH='src'; python scripts/verify_java_compile.py实际输出为 辅助门禁。 $env:PYTHONPATH='src'; python -m pytest tests/unit/ -q
# 664 passed in 5.42s
$env:PYTHONPATH='src'; python scripts/verify_templates.py
# 26 个模板成功渲染
python -m ruff check scripts/verify_java_compile.py tests/unit/test_java_compile_smoke.py
python -m ruff format --check scripts/verify_java_compile.py tests/unit/test_java_compile_smoke.py
git diff --check上述检查均通过。成功编译后的 fixture 路径经 风险、回滚与下一步。 新 CI 会受 Maven 中央仓库可用性和依赖下载时间影响,未改变任何生成器公开 API 或用户数据。若远端门禁阻塞,可回滚 |
里程碑 2:远端 required CI 全量通过工作流与提交。 GitHub Actions run 34207293444 针对 PR head 实际结果。 11 个检查均为 对新增门禁的含义。 合并判断。 没有失败、取消或跳过的 required job,且仅有本 PR 的一个语义单一提交。将使用 squash merge;不包含数据库迁移,出现 CI 基础设施或维护成本问题时可回滚合并提交。 |
关联 Issue
Closes #122
背景(Situation)
现有
scripts/verify_templates.py能验证 Mustache 模板可被渲染且不存在未展开标签,但不能发现由导入、注解处理器、Jakarta API、Spring Data JPA 或 SpringDoc 依赖组合导致的 Java 编译错误。sb35-java21是当前面向 Spring Boot 3.5 与 Java 21 的模板组,需要一条可复现的编译级门禁。本 PR 不把固定样例扩展为真实数据库、应用启动或 HTTP 行为测试;这些属于后续集成测试范围。
任务(Task)
sb35-java21的 entity、dao、dto、service、serviceImpl、controller 六层代码。行动(Action)
scripts/verify_java_compile.py:构造Invoice固定 fixture,覆盖Long主键、非空BigDecimal、可空OffsetDateTime、DTO、Lombok、Jakarta Validation/Persistence 与 SpringDoc 分支。3.5.5、Java21、Spring Data JPA、Validation、SpringDoc2.8.9和 Lombok,执行mvn -B -ntp -DskipTests clean compile。--keep-fixture时保留路径供诊断。新增 4 个单元测试覆盖源文件层级、版本锁定、非交互 Maven 命令和上述清理分支。java-compilejob,使用actions/setup-java@v5安装 Temurin 21;ci-success依赖该 job。开发文档补充相同本地命令。验证(Verification)
本地环境:Windows 11 x86_64、Temurin
21.0.12.1、Maven3.9.16。以下命令均在提交bc2801c的工作树执行:CI YAML 另以
yaml.safe_load解析成功。最终的本机 compile run 也确认成功后的 fixture 路径不存在,符合默认清理约定。实验与证据(Evidence)
Invoice上下文渲染六个sb35-java21模板;在临时 Maven 项目运行 batch compilejavac [release 21]编译 6 个源文件,BUILD SUCCESSFalse没有测量性能指标,也没有运行真实数据库 DDL、CRUD、Spring Boot 应用启动或 HTTP 接口。现有 Testcontainers 集成套件保持独立,未据此宣称数据库兼容性提升。
兼容性、风险与回滚
setup-uv与 GitHub Actions 缓存可减少重复安装,但不消除外部仓库可用性风险。git revert bc2801c,撤回脚本、测试、文档和java-compilerequired dependency,不涉及数据库迁移或用户数据回滚。