# 构建与发布 仓库不依赖全局 Gradle;根工程和四个平台均提交各自 Wrapper。Node.js 只用于生成嵌入 JAR 的管理界面。 ## 本地完整构建 Linux: ```bash export JAVA_HOME_17=/path/to/jdk-17 export JAVA_HOME_21=/path/to/jdk-21 bash scripts/verify-wrappers.sh bash scripts/build-all.sh 1.0.0 ``` Windows PowerShell: ```powershell .\build-all.cmd ``` 直接运行时,Windows 脚本读取四个平台 `gradle.properties` 中的 `mod_version`,并要求它们保持一致,然后构建 Web UI 与四个 JAR。`-Version 2.0.0` 仅用于临时覆盖配置版本,不是必填项。需要同时执行 Web 与 Java 测试时使用 `.\build-all.cmd -WithTests`。脚本会自动寻找 JDK 17/21 以及 ForgeGradle Mavenizer 所需的 JDK 25+;也可用 `-Java17Home`、`-Java21Home`、`-ToolJavaHome` 显式指定。先运行 `.\build-all.cmd -PreflightOnly` 可以只检查环境而不构建,重复开发构建可增加 `-SkipNpmInstall`。 脚本依次校验 Wrapper、构建 Web UI,然后用 JDK 17 构建 1.20.1、用 JDK 21 构建其余三个版本;`-WithTests` 还会运行 Web、公共 Java 与平台测试。最终目录只包含四个可分发 JAR 和 `SHA256SUMS`;`slim`、sources 和 javadoc JAR 不会被误发布。 ## CI 与发布 仓库中的 `.github/workflows/ci.yml` 面向 GitHub Actions 和 GitHub Release。若主 Git 远端托管在不提供兼容 Actions 的自建服务上,必须另行配置受保护的 GitHub/兼容镜像与发布凭据;不能假定仅推送该主远端就会运行这套流水线。未配置镜像时应使用上面的本地完整构建脚本并人工保管校验和,但这不替代 CI 证据。 - Wrapper 同时由 Gradle 官方校验数据库和仓库固定 SHA-256 校验。 - 公共模块在 Ubuntu 与 Windows 测试,覆盖 SQLite 原生库加载和跨平台路径。 - Web UI 与四个 Forge 根并行形成独立构建证据。 - `v*` 标签触发 GitHub Release;标签去掉前导 `v` 后作为模组版本。 - Release 包含四个 JAR、CycloneDX JSON SBOM 和覆盖全部资产的 `SHA256SUMS`。 发布标签只应指向已通过专服启动、原版客户端握手、优雅停止和数据库重启恢复验收的提交。CI 编译成功不能替代这四项运行时验证。 ## 产物命名 ```text xfeservermanager-forge-1.20.1-.jar xfeservermanager-forge-1.20.6-.jar xfeservermanager-forge-1.21.1-.jar xfeservermanager-forge-1.21.11-.jar ``` 不要重命名一个版本的产物并用于另一个 Minecraft 版本。