使用jdk14+提供的jpackage工具打包jar


使用jpackage

  • 本次使用jdk16.0.1,在命令行輸入命令jpackage xxx,可能會提醒需要安裝的軟件,下載安裝即可

  • 創建一個文件夾source-file(名字隨意),把jar放進去,如果項目需要其他文件,也放進去,會被統一打包到exe/msi

  • 本次打包命令:
    jpackage -i source-file -n quicKey --type "msi" --icon auto.ico --vendor "劉亞龍" --description "這是app描述" --copyright "這是版權信息" --app-version 1.01 --verbose --win-per-user-install --win-dir-chooser --win-menu --win-shortcut --win-console --main-jar change-music-1.0.jar

  • 如果不想彈出黑窗口,可以去掉命令行模式--win-console

  • --main-jar-i 是必須要提供的,其他的可以不提供,-n建議設置一個app名字. 注意,如果jar包里沒提供主類,需要用--main-class className指定,強烈建議在打包成jar時指定好程序入口,可以看這篇文章

  • 簡潔常用命令項:jpackage -i source-file -n quicKey --type "msi" --icon auto.ico --verbose --win-dir-chooser --win-menu --win-shortcut --win-console --main-jar change-music-1.0.jar

命令參數介紹:

```
jpackage -h
用法:jpackage <options>

示例用法:
--------------
    生成適合主機系統的應用程序包:
        對於模塊化應用程序:
            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
    生成 Java 運行時程序包:
        jpackage -n name --runtime-image <runtime-image>
--------------

一般選項:
  @<filename>
          從文件讀取選項和/或模式
          可以多次使用此選項。
  --type -t <type>
          要創建的程序包的類型
          有效值為:{"app-image", "exe", "msi"}
          如果未指定此選項,則將創建與平台相關的
          默認類型。
  --app-version <version>
          應用程序和/或程序包的版本
  --copyright <copyright string>
          應用程序的版權
  --description <description string>
          應用程序的說明
  --help -h
          將用法文本輸出到輸出流並退出,用法文本中包含
          適用於當前平台的每個有效選項的列表和說明
  --name -n <name>
          應用程序和/或程序包的名稱
  --dest -d <destination path>
          用來放置所生成的輸出文件的路徑
          默認為當前的工作目錄。
          (絕對路徑或相對於當前目錄的路徑)
  --temp <file path>
          用來創建臨時文件的新目錄或空白目錄的路徑
          (絕對路徑或相對於當前目錄的路徑)
          如果指定,則在任務完成時將不刪除臨時目錄,
          必須手動刪除臨時目錄
          如果未指定,則將創建一個臨時目錄,
          並在任務完成時刪除該臨時目錄。
  --vendor <vendor string>
          應用程序的供應商
  --verbose
          啟用詳細的輸出
  --version
          將產品版本輸出到輸出流並退出

用來創建運行時映像的選項:
  --add-modules <模塊名稱>[,<模塊名稱>...]
          要添加的模塊的逗號 (",") 分隔列表。
          此模塊列表連同主模塊(如果指定)
          將作為 --add-module 參數傳遞到 jlink。
          如果未指定,則僅使用主模塊(如果指定了 --module),
          或者使用默認的模塊集(如果指定了
          --main-jar)。
          可以多次使用此選項。
  --module-path -p <module path>...
          路徑的 ; 分隔列表
          每個路徑要么是模塊的目錄,要么是
          模塊 jar 的路徑。
          (每個路徑可以是絕對路徑,也可以是相對於當前目錄的路徑)
          可以多次使用此選項。
  --jlink-options <jlink 選項>
          要傳遞給 jlink 的選項列表(用空格分隔)
          如果未指定,則默認為 "--strip-native-commands
          --strip-debug --no-man-pages --no-header-files"
          可以多次使用此選項。
  --runtime-image <file path>
          將復制到應用程序映像的預定義
          運行時映像的路徑
          (絕對路徑或相對於當前目錄的路徑)
          如果未指定 --runtime-image,jpackage 將運行 jlink 以
          使用如下選項創建運行時映像:
          --strip-debug、--no-header-files、--no-man-pages 和
          --strip-native-commands。

用來創建應用程序映像的選項:
  --icon <icon file path>
          應用程序包圖標的路徑
          (絕對路徑或相對於當前目錄的路徑)
  --input -i <input path>
          包含要打包的文件的輸入目錄的路徑
          (絕對路徑或相對於當前目錄的路徑)
          輸入目錄中的所有文件將打包到
          應用程序映像中。

用來創建應用程序啟動程序的選項:
  --add-launcher <launcher name>=<file path>
          啟動程序的名稱和包含關鍵字-值對列表的
          屬性文件的路徑
          (絕對路徑或相對於當前目錄的路徑)
          可以使用關鍵字 "module"、"main-jar"、"main-class"、
          "arguments"、"java-options"、"app-version"、"icon" 和
          "win-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 選項,
          但是不能同時指定這兩個選項。

用來創建應用程序啟動程序的與平台相關的選項:
  --win-console
          為應用程序創建控制台啟動程序,應當為
          需要控制台交互的應用程序指定

用來創建應用程序包的選項:
  --app-image <file path>
          用來構建可安裝程序包的
          預定義應用程序映像的位置
          (絕對路徑或相對於當前目錄的路徑)
  --file-associations <file path>
          包含關鍵字-值對列表的屬性文件的路徑
          (絕對路徑或相對於當前目錄的路徑)
          可以使用關鍵字 "extension"、"mime-type"、"icon" 和 "description"
          來描述此關聯。
          可以多次使用此選項。
  --install-dir <file path>
          默認安裝位置下面的相對子路徑
  --license-file <file path>
          許可證文件的路徑
          (絕對路徑或相對於當前目錄的路徑)
  --resource-dir <path>
          覆蓋 jpackage 資源的路徑
          可以通過向該目錄中添加替代資源來覆蓋 jpackage 的
          圖標、模板文件和其他資源。
          (絕對路徑或相對於當前目錄的路徑)
  --runtime-image <file-path>
          要安裝的預定義運行時映像的路徑
          (絕對路徑或相對於當前目錄的路徑)
          在創建運行時程序包時需要使用選項。

用來創建應用程序包的與平台相關的選項:
  --win-dir-chooser
          添加一個對話框以允許用戶選擇
          產品的安裝目錄
  --win-menu
          將該應用程序添加到系統菜單中
  --win-menu-group <menu group name>
          啟動該應用程序所在的菜單組
  --win-per-user-install
          請求基於每個用戶執行安裝
  --win-shortcut
          為應用程序創建桌面快捷方式
  --win-upgrade-uuid <id string>
          與此程序包升級相關聯的 UUID


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM