jpackage
是 JDK 14 引入的一个工具,用于将 Java 应用程序打包成自包含的安装程序包,适用于不同平台(如 Windows、macOS、Linux)。以下是 jpackage
常用属性和参数的详尽列表,帮助你定制和配置打包过程。
常用属性和参数
基本属性
-n, --name
应用程序的名称。
--name MyApp
-i, --input
输入目录,包含应用程序所需的 JAR 文件和资源。
--input path/to/input/directory
--main-jar
指定应用程序的主 JAR 文件。必须在 --input
目录下。
--main-jar app.jar
--main-class
指定主类(包含 public static void main(String[] args)
的类)。
--main-class com.example.Main
--app-version
应用程序版本号。
--app-version 1.0.0
--vendor
应用程序提供者名称。
--vendor "Your Company"
--type
指定打包类型(可选:app-image
, exe
, msi
, rpm
, deb
, pkg
)。不指定时,根据平台默认类型。
--type exe
安装程序属性(Windows)
--win-console
为 Windows 创建控制台应用程序。--win-shortcut
在 Windows 上创建桌面快捷方式。--win-dir-chooser
允许用户在安装时选择安装目录。--win-menu
在 Windows 开始菜单中创建程序组。
--win-upgrade-uuid
指定升级 UUID,允许不同版本之间进行升级。
--win-upgrade-uuid "your-unique-uuid"
--icon
指定应用程序的图标文件(.ico
格式)。
--icon path/to/icon.ico
Linux 特定属性
--linux-shortcut
在 Linux 上创建桌面快捷方式。--linux-package-name
在 Linux 上生成的包的名称。--linux-app-category
指定应用程序的类别(如Utility
,Development
)。
--linux-deb-maintainer
在生成 .deb
包时指定维护者信息。
--linux-deb-maintainer "your-email@example.com"
--linux-rpm-license-type
在生成.rpm
包时指定许可类型。
macOS 特定属性
--mac-sign
签署应用程序包。--mac-signing-key-user-name
用于签署应用程序包的密钥链用户名称。
--mac-package-identifier
指定 macOS 上的包标识符。
--mac-package-identifier com.example.myapp
--mac-package-name
在 macOS 上生成的包的名称。--mac-bundle-signing-prefix
指定 macOS 捆绑包的签名前缀。
JVM 选项
--java-options
向 JVM 传递选项(如 -Xmx
等)。
--java-options "-Xmx1024m"
--runtime-image
指定 JRE 或自定义运行时镜像路径。--add-modules
指定打包时要包含的模块(如java.sql
)。
高级属性
--resource-dir
指定包含自定义资源(如main.wxs
文件)的目录,用于高级安装包自定义。--app-image
指定应用程序镜像目录,直接使用已有镜像而非重新创建。--runtime-installer
指定使用特定的 JDK 进行安装程序的创建。--temp
指定临时文件存放目录。
--arguments
指定应用程序启动时的命令行参数。
--arguments "arg1 arg2"
--input
包含应用程序文件的目录,必须在此目录下指定--main-jar
。--output
指定输出目录,生成的安装包将保存在此处。
示例命令
下面是一个完整的 jpackage
命令示例,展示了如何设置应用程序名称、图标、版本等属性:
jpackage -i ./build/libs --main-jar myapp.jar --main-class com.example.Main --type exe --name MyApp --app-version 1.0 --vendor "My Company" --icon ./icons/myapp.ico --win-shortcut --win-console --win-dir-chooser --java-options "-Xmx1024m"