首先通过IDEA 创建一个 JavaFx 项目,我选择的的版本是JDK17 支持模块化,通过idea创建自动配置,方便很多。
1.maven 插件 :javafx-jlink 构建成独立运行模块。
jlink
是一个用于创建自定义 JRE(Java Runtime Environment)的工具,它允许你只包含应用程序运行所需的 Java 模块。
运行完成效果如下:
在bin目录下可通过app.bat 启动,启动时还带有命令窗口。
2.基于上一步打包成app-image 镜像
在targert目录下载执行命令,参数解释在文章最后。
jpackage --name HelloWorld --type app-image -m com.example.javafxdemo/com.example.javafxdemo.HelloApplication --runtime-image .\app\
生成helloworld文件夹和可执行exe文件
3.根据上一步镜像打包可安装的msi或者exe
下面的步骤需要安装WiX Toolset 工具
官网:WiX Toolset,安装教程网上有,灰常简单。
jpackage --type msi -n HelloWorld --app-image .\HelloWorld\ --dest .\Install --win-dir-chooser --win-menu --win-menu-group HelloWorld --win-shortcut --app-version 1.0
构建成一个可安装的msi文件,大小27MB
-
--type
: 指定打包类型。常见的值包括exe
(Windows 可执行文件)、msi
(Windows 安装程序)、dmg
(macOS 磁盘映像)、pkg
(macOS 安装程序包)、deb
(Debian 系统的安装包)、rpm
(Red Hat 系统的安装包)。你使用的是exe
,表示你要生成一个 Windows 可执行文件。 -
-n
或--name
: 指定生成的应用程序的名称。例如,-n HelloWorld
表示生成的安装程序名称是HelloWorld
。 -
--app-image
: 指定包含应用程序的目录或 JAR 文件的位置。此目录应该包含应用程序的所有必要文件和资源。 -
--dest
: 指定生成的安装程序和相关文件的输出目录。例如,--dest .\build\jpackage-installer-dir
指定将生成的文件放在.\build\jpackage-installer-dir
目录中。 -
--win-dir-chooser
: 在 Windows 平台上,启用目录选择器,允许用户在安装时选择安装目录。如果不使用这个选项,安装程序将会使用默认目录。 -
--win-menu
: 在 Windows 平台上,创建开始菜单快捷方式。如果不使用此选项,安装程序不会创建开始菜单快捷方式。 -
--win-menu-group
: 指定在开始菜单中创建的程序组名称。例如,--win-menu-group JavaFXSample
将在开始菜单中创建名为JavaFXSample
的程序组。 -
--win-shortcut
: 在 Windows 平台上,创建桌面快捷方式。如果不使用此选项,安装程序不会在桌面上创建快捷方式。 --runtime-image
选项用于指定包含精简 JDK 的镜像目录。这不包含应用程序本身,只包含运行该应用程序所需的 JDK 环境。通常,你需要一个单独的--app-image
目录来配合这个选项来创建最终的安装包。--app-version
: 指定应用程序的版本号。--icon
: 指定应用程序的图标文件。对于 Windows,通常是.ico
文件;对于 macOS,通常是.icns
文件。--java-options
: 传递 Java 选项给应用程序的 JVM。--module-path
: 指定模块路径(用于模块化应用程序)。-
--verbose
: 启用详细模式以输出更多的调试信息。
更多命令可以通过jpackage --help查看
参考教程:GitHub - JavaFX-Starter/JavaFX-Package-Sample: JavaFX17 打包示例