Skip to content

feat(maven): 原生任务和测试通过工作区 Provider 执行 - #7

Draft
Mucheen wants to merge 2 commits into
mainfrom
codex/issue-1495-native-execution
Draft

Mucheen wants to merge 2 commits into
mainfrom
codex/issue-1495-native-execution

Conversation

@Mucheen

@Mucheen Mucheen commented Oct 27, 2026 •

Copy link
Copy Markdown

原生 Build 任务和测试此前仍由宿主展开 Maven 命令,Provider 只读取模型与依赖。本 PR 把生命周期、模型中的插件目标、自定义目标和测试交给同一工作区后端;清单删除对应命令模板,并保持 Maven 扩展作为工程事实的来源。

关联:1lck/Lithe-IDEA#1495、1lck/Lithe-IDEA#1517;依赖 SDK Draft PR #4 的新版 Java SDK。宿主只读模型输入已追加到原 #1517(58ca81cf6)。

改动

  • 要求 buildProviders: 3,任务与测试统一走 lithe/build/execute / lithe/build/test;SDK 处理版本协商、操作进度和取消,不调用私有函数或旧宿主 CLI。
  • 模型读取和执行使用同一组生效 Profiles、settings、仓库和 Offline 配置。Skip Tests 保留生命周期任务语义,显式测试动作不会被工具栏开关跳过。
  • 执行前按当前 Maven 扩展模型核对工程名称、目录和插件目标;拒绝伪造目标、未知工程和越界路径。修复嵌套工作区的依赖选择重复拼接构建根。
  • Surefire 接收分开的精确类/方法参数,依赖模块用 -am 构建。精确选择必须产生新报告;空结果、旧 XML 或其他包中的同名类不能伪装为成功。完整结果仍交给宿主已有 JUnit XML 解析器。
  • 返回非零工具退出码并保留流式输出。总输出预算 8 MiB,超限明确失败并停止工具;取消、退出和测试断言失败回收工具及其独立进程组。
  • modelSharing 显式开放规范化项目、目标、内容目录及 profiles/offline/skipTests,排除设置文件内容、未声明选项、任务、运行计划和私有函数。
  • 增加显式本地 SDK 的隔离开发包构建,记录 JAR SHA-256 和完整包文件清单;只写 .artifacts/native-development/run-*,不写 dist/、不生成发行 ZIP、不更改正式 SDK 锁、版本或标签。
  • 真实 Core C ABI + Java Provider + Maven 三模块回归覆盖模型、模块编译、单方法测试、报告和公开模型投影。原有快照、脚本进程测试继续保留,CI 增加 Java 8/17 的原生执行回归。

验证

macOS arm64、Microsoft JDK 21.0.12、Maven 3.9.16:

  • 受控原生 Maven 12 项、真实 Core/Maven 7 项、真实 Maven 集成 16 项、模型快照 16 项、脚本进程清理 8 项,共 59 项回归通过;独立打包另有 3 项计时记录。最终汇总以提交前复跑为准。
  • 后端 52 个类、扩展 5 个类均为 Java 8 字节码 major 52。本地仍未运行 Windows 产品或完整 macOS UI;Java 8 实跑补充见下。
  • 全包文件清单/权限/字节保持不变;逐项 JSON、HTML、JUnit 和本地源码哈希留在忽略的 artifacts,不提交 JAR 或测试缓存。
  • node scripts/package-development.mjs --sdk-jar <local SDK JAR>;指定其打印的 LITHE_TEST_PACKAGE 后,运行 scripts/test-native.mjs、scripts/test.mjs、scripts/test-backend.mjs、scripts/test-process.mjs;真实 Core 回归额外指定 LITHE_CORE_LIBRARY 运行 scripts/test-native-core.mjs。

补充:新增显式固定 sdk-revision 的开发 CI;运行 40533306865 在 Java 8 后端、当前 Maven 与 Maven 3.6.3 两组各通过 55 项计时检查(包含 3 项开发打包),覆盖快照、原生执行、精确测试、失败/取消/进程清理和真实反应堆。开发产物仅在 .artifacts,上传 SDK 哈希/包清单;普通 PR、main 和 Release 继续按正式 SDK 锁校验,源码开发 CI 成功不替代正式打包。

主仓库另新增生产 macOS Provider 会话的真实 Maven 集成,模型、模块编译、精确单方法报告解码与全包只读通过;没有插件页面或私有函数。

合并和发布前置条件

保持 Draft。正式 sdk.lock.json 仍锁定已经发布的旧 SDK,本 PR 没有伪造新校验值或放松正式打包校验。配套 SDK 合并并发布后,必须在本 PR 更新到实际发布的版本、URL 和 SHA-256,复跑正式 package.mjs、Java 8/17 与 CI,才可 ready/合并。 当前源码直接用旧锁执行正式打包尚不能通过,这是已知依赖,不当作可发布包。

宿主/Core 的新能力合并、公开契约镜像同步与 Maven SDK 锁定须按依赖顺序进行。旧 MavenService、Agent、设置、运行配置和 Java/JDT 迁移不在本 PR;不关闭 #1495,也不宣称整个 Maven 纵向迁移完成。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant