常见的打包工具比较
- Java Package:依赖JRE和Libs(jar集合)环境运行,对于具有大量依赖的复杂项目,手动管理JAR文件的依赖关系和类路径设置可能会变得复杂和困难。无法支持程序更新时变更环境。
- exe4j:exe4j是一个Windows平台特定的工具(商业软件),因此仅适用于Windows操作系统。如果你的应用程序需要在其他操作系统上运行,你需要另外寻找其他工具或解决方案。exe4j本身并不提供Java运行时环境(JRE),因此你需要先确保在打包应用程序之前已经正确安装了jdk17。
- GraalVM:GraalVM需要单独的安装和配置过程。这可能对开发人员和部署过程带来额外的复杂性和工作量。GraalVM是AOT编译器,不支持反射技术,针对使用了反射的类需要特殊标记,在Spring框架中,反射被广泛使用,标记反射过于繁琐,也有可能出现依赖丢失环境不兼容等情况。
- jpackage:由于Spring Boot 2.x是构建在Java平台上的,因此使用jpackage可以很好地与Spring Boot项目集成,同时也可以包含JavaFX界面。JDK 17为了更好地支持JavaFX,将JavaFX模块纳入了JDK中。使用jpackage进行打包时,你可以指定应用程序的相关选项,例如入口类、依赖项和运行时镜像。通过执行jpackage命令,你可以生成适用于不同操作系统的可执行文件或安装程序。
jpackage描述
jpackage工具以 Java 应用程序和 Java 运行时映像作为输入,并生成包含所有必要依赖项的 Java 应用程序映像。它将能够生成特定于平台的格式的本机包,例如 Windows 上的 exe 或 macOS 上的 dmg。每种格式都必须在其运行的平台上构建,没有跨平台支持。该工具将具有允许以各种方式自定义打包应用程序的选项。
前期准备
1、安装jdk14+以上
2、下载并安装Wix.exe 工具,不然会报:“找不到 WiX 工具 (light.exe, candle.exe)”的错误。具体下载安装教程请往下看
3、SpringBoot 2.x项目运行maven将项目打包成jar
打包过程
本文将使用win11系统打包,打开cmd终端控制台,进入到项目打包的target目录下,运行:
打包exe安装程序
打包exe需要安装Wix.exe
jpackage --name cabin --type exe --input D:/WorkProjects/mute-cabin-manager/target --main-jar cabin.jar --java-options "-Dfile.encoding=utf-8 -Xms2048m -Xms2048m" --win-console --win-dir-chooser --win-shortcut-prompt --dest D:\WorkProjects
打包app-image
打包app-image无需安装Wix.exe ,可直接运行。如要制作安装包也可使用inno setup 制作可安装程序。参考《JavaFx打包成exe》这篇文章有介绍
jpackage --name cabin --type app-image --input D:/WorkProjects/mute-cabin-manager/target --main-jar cabin.jar --java-options "-Dfile.encoding=utf-8 -Xms2048m -Xms2048m" --win-console --win-dir-chooser --win-shortcut-prompt --dest D:\WorkProjects
Wix.exe工具下载及安装
下载
直接附下载链接: https://github.com/wixtoolset/wix3/releases/tag/wix3141rtm
安装
安装wix314.exe需要.NET 3.5环境,打开控制面板->程序和功能->启用或关闭Windows功能->勾选.NET Framework 3.5
随后让Windows自己更新下载就好了
设置完后点击 wix314.exe Install安装,随后就可以使用jpackage了
jpackage命令参数说明
参数 | 描述 | 示例 | 说明 |
---|---|---|---|
--type | 打包类型 | exe | "app-image","exe","msi","rpm","deb","pkg","dmg" |
--name | 打包名称 | cabin | 打包后的exe名称 |
--input | 输入目录 | target | 需要打包的目录 |
--main-jar | 启动jar包 | cabin.jar | 主程序jar包 |
--icon | 应用图标 | cabin.ico | 指定的icon格式图标 |
--win-console | 显示控制台 | 应用程序运行时打开控制台 | |
--win-shortcut | 桌面快捷方式 | 安装时创建桌面快捷方式 | |
--dest | 输出目录 | D:\WorkProjects | 指定exe输出的目录 |