JPackage

 

介绍 Jpackage

jpackage - 打包一个自包含的 Java 应用程序

 

概要

jpackage [options]

options 由空格分隔的命令行选项。请参阅 jpackage 选项。

 

描述

jpackage 工具将以 Java 应用程序和 Java 运行时映像作为输入,并生成包含所有必要依赖项的 Java 应用程序映像。它能够生成平台特定格式的原生包,例如 Windows 上的 exe 或 macOS 上的 dmg。每个格式都必须在运行的平台上构建,不支持跨平台。该工具将提供选项,允许以各种方式自定义打包的应用程序。

 

选项

通用选项

@filename 从文件读取选项和/或模式。

此选项可以多次使用。

--type 或 -t <type string> 要创建的包类型

有效值为:{app-image, exe, msi, rpm, deb, pkg, dmg}

如果未指定此选项,将创建平台相关的默认类型。

--app-version <version> 应用程序和/或包的版本`

--copyright <copyright string> 应用程序的版权。

--description <description string> 应用程序的描述。

--help-h 将包含当前平台每个有效选项的列表和描述的用法文本打印到输出流,并退出。

--name-n <name> 应用程序和/或包的名称。

--dest-d <output path> 生成的输出文件放置的路径

默认为当前工作目录(绝对路径或相对于当前目录)。

--temp <file path> 用于创建临时文件的新的或空的目录的路径(绝对路径或相对于当前目录)。如果指定,则在任务完成后不会删除临时目录,必须手动删除。如果未指定,则将在任务完成后创建并删除临时目录。

--vendor <vendor string> 应用程序的供应商。

--verbose 启用详细输出。

--version 将产品版本打印到输出流并退出。

创建运行时映像的选项

--add-modules <module name> [,<module name>...] 要添加的模块的逗号 (,) 分隔列表。

此模块列表以及主模块(如果指定)将作为 --add-module 参数传递给 jlink。如果未指定,则仅使用主模块(如果指定了 --module),或使用默认模块集(如果指定了 --main-jar)。

此选项可以多次使用。

--module-path-p <module path>... 一个 File.pathSeparator 分隔的路径列表。每个路径都是模块目录或模块化 jar 的路径,并且是绝对路径或相对于当前目录的路径。此选项可以多次使用。

--jlink-options <jlink options> 要传递给 jlink 的空格分隔的选项列表。如果未指定,则默认为 --strip-native-commands --strip-debug --no-man-pages --no-header-files。此选项可以多次使用。

--runtime-image <file paths> 将复制到应用程序映像中的预定义运行时映像的路径(绝对路径或相对于当前目录)。

如果未指定 --runtime-image,jpackage 将运行 jlink 以使用以下选项创建运行时映像: --strip-debug--no-header-files--no-man-pages--strip-native-commands

创建应用程序映像的选项

--icon <icon file path> 应用程序包图标的路径(绝对路径或相对于当前目录)。

--input-i <input path> 包含要打包的文件的输入目录的路径(绝对路径或相对于当前目录)。输入目录中的所有文件都将打包到应用程序映像中。

创建应用程序启动器(s)的选项

--add-launcher <launcher name>=<file path> 启动器的名称,以及包含键值对列表的属性文件的路径(绝对路径或相对于当前目录)。

可以使用 moduleadd-modulesmain-jarmain-classargumentsjava-optionsapp-versioniconwin-console 键。

这些选项将添加到原始命令行选项中,或用于覆盖原始命令行选项以构建额外的替代启动器。主应用程序启动器将根据命令行选项构建。可以使用此选项构建额外的替代启动器,并且可以多次使用此选项以构建多个额外的启动器。

--arguments <main class arguments> 如果启动器没有给出任何命令行参数,则要传递给主类的命令行参数。此选项可以多次使用。

--java-options <java options> 要传递给 Java 运行时的选项。

此选项可以多次使用。

--main-class <class name> 要执行的应用程序主类的限定名称。

此选项只能在指定了 --main-jar 时使用。

--main-jar <main jar file> 应用程序的主 JAR;包含主类(指定为相对于输入路径的路径)。可以指定 --module--main-jar 选项,但不能同时指定两者。

--module 或 -m <module name>/<main class>] 应用程序的主模块(以及可选的主类)。此模块必须位于模块路径上。当指定此选项时,主模块将在 Java 运行时映像中链接。可以指定 --module--main-jar 选项,但不能同时指定两者。

创建应用程序启动器的平台相关选项

Windows 平台选项(仅在 Windows 上运行时可用)

--win-console 为应用程序创建控制台启动器,应为需要控制台交互的应用程序指定。

macOS 平台选项(仅在 macOS 上运行时可用)

--mac-package-identifier <ID string> 用于唯一标识 macOSX 上应用程序的标识符。

默认为主类名。

只能使用字母数字 (A-Z,a-z,0-9)、连字符 (-) 和句点 (.) 字符。

--mac-package-name <name string> 应用程序在菜单栏中显示的名称。这可能与应用程序名称不同。此名称必须小于 16 个字符,并且适合在菜单栏和应用程序信息窗口中显示。默认为应用程序名称。

--mac-bundle-signing-prefix <prefix string> 在对应用程序包进行签名时,此值将作为前缀添加到所有需要签名的组件,这些组件没有现有的包标识符。

--mac-sign 请求对包进行签名。

--mac-signing-keychain <file path> 要搜索签名身份的密钥链的路径(绝对路径或相对于当前目录)。如果未指定,则使用标准密钥链。

--mac-signing-key-user-name <team name> Apple 签名身份名称中的团队名称部分。例如“开发者 ID 应用程序:

创建应用程序包的选项

--app-image <file path> 用于构建可安装包的预定义应用程序映像的位置(绝对路径或相对于当前目录)。

请参阅创建应用程序映像模式选项以创建应用程序映像。

--file-associations <file path> 包含键值对列表的属性文件的路径(绝对路径或相对于当前目录)。

可以使用 extensionmime-typeicondescription 键来描述关联。

此选项可以多次使用。

--install-dir <file path> 应用程序在 OS X 或 Linux 上的安装目录的绝对路径。应用程序安装位置的相对子路径,例如 Windows 上的“Program Files”或 AppData

--license-file <file path> 许可证文件的路径(绝对路径或相对于当前目录)。

--resource-dir <path> 用于覆盖 jpackage 资源的路径(绝对路径或相对于当前目录)。

可以通过将替换资源添加到此目录来覆盖 jpackage 的图标、模板文件和其他资源。

--runtime-image <file-path> 要安装的预定义运行时映像的路径(绝对路径或相对于当前目录)。创建运行时安装程序时,此选项是必需的。

创建应用程序包的平台相关选项

Windows 平台选项(仅在 Windows 上运行时可用)

--win-dir-chooser 添加一个对话框,允许用户选择安装产品的目录。

--win-menu 将应用程序添加到系统菜单。

--win-menu-group <menu group name> 将此应用程序放置在的开始菜单组。

--win-per-user-install 请求以每个用户为基础执行安装。

--win-shortcut 为应用程序创建桌面快捷方式。

--win-upgrade-uuid <id string> 与此包的升级相关的 UUID。

Linux 平台选项(仅在 Linux 上运行时可用)

--linux-package-name <package name> Linux 包的名称,默认为应用程序名称。

--linux-deb-maintainer <email address> .deb 包的维护者。

--linux-menu-group <menu-group-name> 将此应用程序放置在的菜单组。

--linux-package-deps 应用程序所需的包或功能

--linux-rpm-license-type <type string> 许可证的类型(RPM .spec 的“License: ”)。

--linux-app-release <release string> RPM .spec 文件的版本值或 DEB 控制文件的 Debian 修订版本值。

--linux-app-category <category string> RPM .spec 文件的组值或 DEB 控制文件的节值。

--linux-shortcut 为应用程序创建快捷方式

 

示例

为宿主系统生成一个应用程序包。 对于一个模块化应用程序

jpackage -n name -p modulePath -m moduleName/className

对于一个非模块化应用程序

jpackage -i inputDir -n name --main-class className --main-jar myJar.jar

从一个预先构建的应用程序镜像

jpackage -n name --app-image appImageDir

生成一个应用程序镜像 对于一个模块化应用程序

jpackage --type app-image -n name -p modulePath -m moduleName/className

对于一个非模块化应用程序

jpackage --type app-image -i inputDir -n name --main-class className --main-jar myJar.jar

要提供您自己的选项给 jlink,请单独运行 jlink

jlink --output appRuntimeImage -p modulePath -m moduleName --no-header-files [<additional jlink options>...]

jpackage --type app-image -n name -m moduleName/className --runtime-image appRuntimeImage

jpackage -n name --runtime-image <runtime-image>

生成一个 Java 运行时包

jpackage -n name --runtime-image <runtime-image>

最后更新: 2021 年 9 月 14 日