jpackage 的参数详细说明

761 阅读3分钟

以下是 jpackage 工具的详细参数说明,结合官方文档及实际使用场景整理而成:


一、通用参数

  1. ​**--type / -t**​

    • 作用​:指定输出包的类型。
    • 可选值​:app-image(生成独立应用文件夹)、exe(Windows可执行文件)、msi(Windows安装包)、dmg(macOS镜像)、pkg(macOS安装包)、deb/rpm(Linux包)。
    • 示例​:--type exe 生成Windows EXE文件。
  2. ​**--name / -n**​

    • 作用​:设置应用名称,影响输出文件名和安装目录名。
    • 示例​:--name MyApp 生成的EXE文件为 MyApp.exe
  3. ​**--dest / -d**​

    • 作用​:指定输出目录,默认为当前目录。
    • 示例​:--dest release 将文件输出到 release 文件夹。
  4. ​**--app-version**​

    • 作用​:定义应用版本号,影响安装包元数据。
    • 示例​:--app-version 1.2.0
  5. ​**--vendor**​

    • 作用​:设置供应商信息,显示在系统安装信息中。
    • 示例​:--vendor "My Company"

二、运行时镜像相关参数

  1. ​**--runtime-image**​

    • 作用​:指定自定义JRE目录(需通过 jlink 生成),实现无外部Java依赖。
    • 示例​:--runtime-image custom-jre
  2. ​**--module-path / -p**​

    • 作用​:指定模块路径(分号分隔),用于模块化应用打包。
    • 示例​:-p "javafx-sdk/lib;mods"
  3. ​**--add-modules**​

    • 作用​:显式添加依赖模块,与 jlink 配合使用。
    • 示例​:--add-modules java.base,javafx.controls

三、应用映像相关参数

  1. ​**--input / -i**​

    • 作用​:指定输入目录,包含所有需要打包的文件(JAR、资源等)。
    • 示例​:--input target 包含 target 目录下的JAR文件。
  2. ​**--main-jar**​

    • 作用​:指定主JAR文件(非模块化应用必须),需在输入目录中。
    • 示例​:--main-jar myapp.jar
  3. ​**--main-class**​

    • 作用​:显式指定主类名(当JAR的 MANIFEST.MF 未定义主类时使用)。
    • 示例​:--main-class com.example.Main
  4. ​**--icon**​

    • 作用​:设置应用图标(Windows需 .ico,macOS需 .icns)。
    • 示例​:--icon app.ico

四、启动器相关参数

  1. ​**--arguments**​

    • 作用​:传递命令行参数给应用程序。
    • 示例​:--arguments "--debug --port=8080"
  2. ​**--java-options**​

    • 作用​:设置JVM参数(如堆内存、系统属性)。
    • 示例​:--java-options "-Xmx512m -Dlog.level=INFO"
  3. ​**--win-console**​

    • 作用​:为Windows应用启用控制台窗口(适合命令行程序)。
    • 示例​:--win-console
  4. ​**--win-shortcut**​

    • 作用​:在开始菜单创建快捷方式(仅限Windows)。
    • 示例​:--win-shortcut

五、高级参数

  1. ​**--temp**​

    • 作用​:指定临时目录路径,默认自动清理。
    • 示例​:--temp build/tmp
  2. ​**--verbose**​

    • 作用​:启用详细日志输出,用于调试。
  3. ​**--bind-services**​

    • 作用​:链接服务提供者模块(需与 jlink 配合)。

注意事项

  1. Windows依赖​:

    • 生成 msiexe 需安装 ​WiX 3.11+​​ 并配置环境变量。
  2. 模块化与非模块化​:

    • 模块化应用优先使用 --module-path-m,非模块化应用用 --main-jar
  3. 体积优化​:

    • 通过 jlink 生成精简JRE可减少运行时体积(约30-50%)。

完整示例

bash
复制
# 非模块化应用打包(Windows)
jpackage --type exe \
  --input target \
  --main-jar myapp.jar \
  --name MyApp \
  --vendor "My Company" \
  --app-version 1.0.0 \
  --icon icon.ico \
  --win-console \
  --win-shortcut

如需更高级配置(如自定义签名、安装界面),可参考 WiX文档 或 JDK官方指南。 码觉客微信公众号