用途:在任何本地 SynapseML 构建、编译或测试验证之前使用本技能,帮助在 WSL 或 Linux 上完成本地环境搭建与验证。
主要能力与约束:必须显式指定 SynapseML 仓库路径;不要用机器默认的 Java 21 运行 SynapseML SBT,应使用 JDK 11:/usr/lib/jvm/java-11-openjdk-amd64。Java 21 可能在项目代码编译前就失败,报 bad constant pool index: 0,发生在构建 Scala 2.12 compiler-bridge_2.12 时。编译命令本身安全;但部分认知服务测试会创建、写入、列出或删除真实 Azure 资源,运行前需检查,涉及在线资源时应先征求批准。
工作流:一,诊断仓库与工具链,运行 scripts/synapseml-doctor.sh --repo <synapseml-repo>,记录 Git 分支与未提交状态、默认 Java 版本、JDK 11 是否可用、sbt 版本及 SynapseML 的 Scala/Spark 版本。二,用 JDK 11 编译,运行 scripts/synapseml-sbt.sh --repo <synapseml-repo> -- cognitive/Test/compile,预期 sbt 欢迎行显示 Java 11,core 与 cognitive 的主/测试类编译通过,命令以 [success] 退出。三,运行安全的本地冒烟测试,运行 scripts/synapseml-smoke-test.sh --repo <synapseml-repo>,预期执行一个本地 Spark 测试并输出 All tests passed。四,运行前检查 PR 相关测试,先运行 scripts/check-live-service-tests.sh --path <test-file-or-directory>,若报告存在在线服务钩子,须先询问用户再运行该测试套件;不要仅为测试 PR 而创建或删除 Azure Search 索引。五,仅在安全审查后运行定向测试,使用 JDK 11 包装脚本:scripts/synapseml-sbt.sh --repo <synapseml-repo> -- '<module>/testOnly <SuiteName> -- -z "<test filter>"'。若测试在编译项目代码前失败,查阅 references/troubleshooting.md。
已知可用基线(2026-05-05 验证):JDK 为 /usr/lib/jvm/java-11-openjdk-amd64,openjdk version "11.0.30";SynapseML 使用 Scala 2.12.17、Spark 3.5.0、sbt 1.10.11;编译 sbt 'cognitive/Test/compile' 成功;冒烟测试 UDFTransformerSuite 过滤测试成功。其余平台、环境或收费信息资料暂未提供。