MelodyMatrix V1.0.0 发布:基于 JavaFX、jDeploy 与 GitHub Actions 实现自动化部署
目录 什么是 MelodyMatrix? 什么是 jDeploy? 视频:共同准备并触发首次发布 为什么选择 jDeploy,以及它为什么免费 关于 Lottie4J 的侧记 时间轴 链接
有些业余项目需要很长时间才能迎来正式版本。MelodyMatrix 就是其中之一。得益于 jDeploy,这款应用已经可以下载很长一段时间了,但此前一直没有正式的 V1.0.0 版本。没有打上标签的发布版本,也没有那种“好了,就是它了”的里程碑时刻,只是在每次提交到 main 分支时进行滚动构建。
现在情况变了:在镜头前,与 jDeploy 的创始人 Steve Hannah 一起,我们完成了这一过程。
什么是 MelodyMatrix?
MelodyMatrix 是一款面向音乐人的 JavaFX 应用程序。它连接 MIDI 设备,让你进行练习和录音,并提供了一系列视图来帮助你理解正在演奏的内容。这些视图是开源的,可在 GitHub 上获取。整个应用程序是免费的,但部分功能需要许可证才能使用。下载包通过 GitHub Releases 发布。
构建它的过程是一段漫长的旅程。将 JavaFX、MIDI 和音乐理论集成在一个应用中,确保它在 Windows、macOS 和 Linux 上都能运行,同时还要通过 GitHub Actions 进行自动化构建和分发。后一部分正是 jDeploy 发挥作用的地方。
什么是 jDeploy?
如果你还没听说过 jDeploy,Steve 用几句话解释得很清楚:“当你完成桌面应用程序的构建后,你会遇到一个障碍:如何分享它?用户如何安装它?当你更新它时,用户如何在不手动下载和重新安装的情况下获取新版本?”
jDeploy 解决了所有这些问题。它为 Windows (.exe)、macOS (.dmg) 和 Linux 创建原生安装程序,处理启动时的自动更新,捆绑自己的 JVM(因此用户无需安装 Java),并使用 GitHub Releases 作为分发后端。无需 Maven Central,无需 NPM 账号。你的 GitHub 仓库就是你的分发渠道。
我之前对 Steve 进行了专访,他解释了该工具的背景:JavaFX In Action #12 与 Steve Hannah 谈论 jDeploy。如果你想了解全貌,非常值得一看。
视频:共同准备并触发首次发布
这段新视频时长约一小时,涵盖了为 MelodyMatrix 准备 V1.0.0 版本的全过程。Steve 加入了我的直播,我们一起检查了项目配置,修复了 GitHub Actions 工作流中的一些问题,讨论了关于 git 标签的最佳实践,并在录制过程中实际触发了首次发布构建。
我们讨论的部分内容包括:
- 如何在 MelodyMatrix 项目中配置 jDeploy,包括如何启用 JavaFX 预览功能。
- npm 与 GitHub 在发布包方面的对比(简而言之:npm 比 Maven 更容易上手,Steve 仿照 npm 包格式建立了 GitHub 元数据格式)。
- 为什么 Windows 安装程序是
.exe文件而不是 zip(用户体验:下载、点击、完成)。 - jDeploy 如何为每个平台管理自己的 JVM(默认为 Zulu,Windows ARM 和 Linux 除外)。
- 为什么 Maven 不用于应用程序分发,以及为什么 Steve 每次执行 Maven 部署时都提心吊胆。
- 如何设置发布版本号而不破坏 jar 文件的路径。
- 如何防止多个 jDeploy 工作流同时运行。
- 关于 git 标签的最佳实践,包括大写 V 与小写 v 的争论。
- 使用自定义 HTML 页面自定义安装程序和启动闪屏。
- jDeploy 如何使用本地构建在推送到 GitHub 之前测试安装。
在 57 分钟左右,GitHub Actions 上的发布构建完成,MelodyMatrix V1.0.0 正式上线。
为什么选择 jDeploy,以及它为什么免费
jDeploy 是完全免费的!Steve 希望 Java 桌面应用能够易于部署,任何进入门槛都会违背这一目标。他正在开发一个付费层级,支持私有仓库和部署身份验证,但核心工具将保持免费。
对于像 MelodyMatrix 这样构建业余项目的独立开发者来说,这非常重要。我可以通过给提交打标签来推送新版本,几分钟内,每个平台都有了新的安装程序。用户在下次启动时会自动获取。无需手动分发,无需发送“请重新下载安装程序”的邮件。
关于 Lottie4J 的侧记
在等待 GitHub Actions 构建完成时,Steve 提到他一直在尝试向 jDeploy 闪屏添加 Lottie 动画支持,我们聊了一会儿 Lottie4J。这就是直播中会发生的事情。:slightly_smiling_face: Steve 甚至构建了一个 Claude Code 技能,用于创建带有 LottieFiles 动画的自定义 HTML 闪屏。如果你想尝试:GitHub 上的 jdeploy-claude 以及 自定义启动闪屏技能。
时间轴
- 00:00 介绍
- 00:48 Steve Hannah 是谁,以及他为什么要创建 jDeploy 来分发带有自动更新的 Java 应用
- 05:42 Frank 如何在 MelodyMatrix 中使用 jDeploy,应用程序演示
- 07:26 MelodyMatrix 项目中的 jDeploy 配置,如何启用 JavaFX 预览功能,GitHub Actions
- 08:32 新版本如何分发,npm vs Maven vs GitHub
- 10:56 MelodyMatrix 的 GitHub Actions 流程概览
- 13:38 为什么 Maven 不用于应用程序分发
- 16:38 为什么 Windows 安装程序是
.exe文件 - 23:13 jDeploy 应用程序使用的 JVM 运行时
- 26:05 修改安装程序和应用程序的闪屏
- 28:23 用于配置项目的 jDeploy 桌面应用
- 31:46 为首次发布准备 MelodyMatrix 项目,如何设置发布版本号,以及改进 GitHub 工作流
- 40:45 关于 MelodyMatrix 项目开源部分的说明,以及 Gradle 与 Maven 之间的纠结
- 42:59 检查发布的 GitHub Actions,以及为防止多个 jDeploy 工作流同时运行所做的改进
- 45:39 关于使用 git 标签的最佳实践
- 48:42 开始构建第一个 MelodyMatrix 发布版本 V1.0.0!
- 49:40 当构建过程在 GitHub Actions 上运行时,在本地尝试 jDeploy
- 54:34 GitHub Actions 上的发布构建仍在进行,因此转而讨论 LottieFiles 和 Lottie4J,以及它们如何集成到 jDeploy 闪屏中
- 57:41 首次发布准备就绪。安装并试用...
- 01:00:40 jDeploy 是免费的!Steve 只是希望 Java 易于部署
- 01:02:31 总结
链接
- JavaFX In Action #12 与 Steve Hannah 谈论 jDeploy,将你的 Java 应用作为原生包分发
- Steve Hannah:
- MelodyMatrix:
- jDeploy:
- Lottie4J: