Repository navigation
Java 本地增量构建可能使用旧 core 编译产物 #870
Copy link
Copy link
Open
Labels
agent-taskTask tracked by autonomous agent workflowTask tracked by autonomous agent workflowarea:javaJava / Maven modulesJava / Maven modulesarea:repoRepo-wide config, CI, toolingRepo-wide config, CI, toolingbugSomething isn't workingSomething isn't workingstatus:reviewImplementation done, awaiting review/mergeImplementation done, awaiting review/merge
Description
Activity
- addedbugSomething isn't workingSomething isn't workingagent-taskTask tracked by autonomous agent workflowTask tracked by autonomous agent workflowstatus:readyReady for an agent to pick upReady for an agent to pick uparea:javaJava / Maven modulesJava / Maven modulesarea:repoRepo-wide config, CI, toolingRepo-wide config, CI, toolingstatus:in-progressAn agent is actively working on thisAn agent is actively working on thisand removedstatus:readyReady for an agent to pick upReady for an agent to pick up
on Oct 11, 2026 开始处理,基线为当前 master
d5db1835。冻结本次契约:
- 支持版本沿用现有 Java 17 验证基线、Node 22.13+/24+、Bun 1.4.0 与当前锁文件(TypeScript 6.0.3),不修改兼容承诺或依赖版本。
- 范围:
knife4j-openapi3-uiMaven 生命周期在 Vite 前显式编译knife4j-core与knife4j-schema-engine;真实冷/热工作区回归门禁接入现有 Java 标准脚本。 - 外部行为:冷工作区,以及已有过时 JS/声明的热工作区,生产 WebJar 的完整文件集合与字节必须等于当前源码显式 core/schema + Vite 构建;core/schema 编译失败必须阻止打包。
- 非目标:CI workflow、发布流程、版本升级、OAS2、UI 产品行为及 Go 宿主实现。仅核对已有 Go 静态 UI 一致性,不扩大发布任务 发布 Java 5.7.7 与 Knife4x Go v0.8.6 #868/发布:准备 Java 5.7.7 与 Go v0.8.6 #869。
- 验证:修复前隔离工作区真实 Maven 冷/热构建复现;修复后同一断言转绿;
./tools/test-java.sh、./tools/test-front-core.sh、./tools/sync-knife4x-ui.sh --check;独立 reviewer 对当前 base/head 的真实 diff 与构建证据重点审查,当前 head PR CI 通过后才进入status:review。
正在执行修复前回归:复制实际 POM 与跟踪源码到临时工作区,以完整 Maven package 和显式前端构建对照,再向已安装工作区的两个包 lib 注入可追踪的过时 JS/声明,复用同一 Maven 生命周期。无污染原工作区的编译产物。
已在未修复的当前 master
d5db1835复现。命令(Java 17,Bun 1.4.0,Node 24.11.0):
python3 knife4j/knife4j-openapi3-ui/src/test/scripts/test-current-workspace.py
该新回归脚本复制实际 POM、跟踪源码及 formatter 资源到临时工作区,执行完整
mvn package(启用现有 UI 资源 smoke),与显式 core/schema build + 同参数 Vite 构建对照。冷构建通过;然后保持源码/锁文件/node_modules 不变,只向两个包已编译的 index.js 与 index.d.ts 注入过时标记,再执行相同 Maven package。修复前结果:两次 Maven 都报 BUILD SUCCESS,但热构建回归断言失败:
Cold workspace PASS: 12 WebJar files match explicit build AssertionError: Hot Maven WebJar consumed stale workspace output: extra=[], missing=[], changed=['assets/index.js', 'assets/lib.js']这确认缺陷是安装完成后没有显式重编译工作区包;Maven 成功或 UI 资源存在不保证内容来自当前源码。接下来只在 Vite 前添加 core/schema build,并把该真实回归纳入 Java 标准验证。
当前 head
14b9f31427a5134110c8d5fc3ca734f2f3b94fdd:- Maven 在 Vite 前显式编译 core/schema-engine,编译错误阻止继续打包。
- 修复前红灯同一回归已转绿:真实冷/热工作区的生产 WebJar 全部 12 文件与显式前端构建逐字节一致;两包旧 JS/声明刷新;两包编译失败均在 Vite 前终止。
- Java 17
./tools/test-java.sh通过,14 smoke 模块及配置/兼容门禁通过;前端标准脚本和 Go UI 一致性检查通过。 - 生产 Java WebJar 与 Go 静态 UI 全部 12 文件一致。
- 独立 reviewer 一轮 full 审查 approve,无 findings、范围漂移或后续项(审查证据已记录 PR)。
- 当前 head GitHub CI 全部适用检查通过:https://github.com/songxychn/knife4j-next/actions/runs/38145776666 ,含 Java 标准验证和兼容报告。
PR 已转为 ready for review;本 issue 转
status:review等维护者合并。尚未合并或发布,issue 由合并 PR 后关闭。- addedstatus:reviewImplementation done, awaiting review/mergeImplementation done, awaiting review/mergeand removedstatus:in-progressAn agent is actively working on thisAn agent is actively working on this
on Oct 11, 2026
Metadata
Metadata
Assignees
Labels
agent-taskTask tracked by autonomous agent workflowTask tracked by autonomous agent workflowarea:javaJava / Maven modulesJava / Maven modulesarea:repoRepo-wide config, CI, toolingRepo-wide config, CI, toolingbugSomething isn't workingSomething isn't workingstatus:reviewImplementation done, awaiting review/mergeImplementation done, awaiting review/merge
发布任务 #868 纳入 #867 时复现:已有
front/core/lib的本地工作区,Java 构建可能使用升级前的 core 编译产物。此次正式发布候选已通过显式前端编译、重新执行 Java 标准验证与 Java/Go 12 文件字节一致性验收;本 issue 跟踪本地增量构建的可重复性,不扩大 #869 的发布实现范围。复现场景:
8d7ef1e872a34b2107500b18dadbe091264bc858已运行前端标准脚本,存在 TypeScript 5.9 / ES5 编译的被忽略front/core/lib。8f4c0c731706a417f328865fd5958d43f173a7d9,OAS3 升为 TypeScript 6.0.3,core target 变为 ES2015;已有 lib 不随 Git 更新。./tools/test-java.sh。bun-install日志只更新1个package,没有重新生成 core/lib;随后 Vite 从 package mainlib/index.js消费旧输出。Java14smoke通过不证明所有内嵌资源来自当前源码。./tools/test-front-core.sh与./tools/sync-knife4x-ui.sh --check,前端显式build生成当前产物。对照此前Java WebJar,入口JS字节不一致。实际证据:
b54c81f58cce4236920d7323a680a7516a83d4ee267413b77b67792a43755102,对应升级前输出。49e20a507f54953d5a06ed914e62c4843d33dff27bb4a69e484427fa8471d1af。bun install --frozen-lockfile生成core192/schema32文件,与显式build逐字节一致。Release workflow使用freshcheckout并只缓存Maven,未缓存core/lib;本次并未复现正式发布冷构建使用旧输出。待处理范围:让Java UI增量构建明确消费当前core/schema产物,或建立足以检测旧产物的门禁;冷/热工作区都应与显式前端build一致。实施前按AGENTS冻结验证范围并独立审查;涉及POM/构建流程的真实diff与证据需重点检查,不在发布PR临时修改CI逻辑。