最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于SpringBoot+JPackage構建獨立安裝包的操作流程

 更新時間:2026年01月29日 08:24:03   作者:風象南  
從JDK 14開始,Java官方引入了JPackage工具(在JDK 16 正式成為標準功能),它能夠將 Java 應用打包成特定平臺的原生安裝包,本文將介紹如何使用 JPackage 工具將 Spring Boot 項目打包成 Windows、macOS 或 Linux 平臺的原生安裝包,需要的朋友可以參考下

前言

從 JDK 14 開始,Java 官方引入了 JPackage 工具(在 JDK 16 正式成為標準功能),它能夠將 Java 應用打包成特定平臺的原生安裝包,自帶定制化的 JRE 運行環(huán)境。這意味著用戶無需提前安裝 Java 環(huán)境,雙擊安裝包即可完成應用部署,極大地簡化了交付流程。

本文將介紹如何使用 JPackage 工具將 Spring Boot 項目打包成 Windows、macOS 或 Linux 平臺的原生安裝包。

一、JPackage 簡介

1.1 什么是 JPackage

JPackage 是 JDK 自帶的打包工具,位于 $JAVA_HOME/bin 目錄下。它的核心功能是:

生成平臺原生安裝包:Windows 的 .exe/.msi、macOS 的 .dmg/.pkg、Linux 的 .deb/.rpm

自定義 JRE:使用 jlink 工具裁剪 JDK,僅打包應用所需的模塊,大幅減小安裝包體積

簡化部署:用戶無需預裝 Java 環(huán)境,安裝包自帶運行時

1.2 JPackage 的優(yōu)勢

傳統(tǒng)部署方式JPackage 方式
需要預裝 JRE/JDK自帶 JRE,無需額外安裝
環(huán)境版本可能不匹配綁定特定 JRE 版本,環(huán)境一致
手動編寫啟動腳本自動生成啟動器
跨平臺需要多套腳本一鍵生成各平臺安裝包

二、環(huán)境準備

2.1 JDK 版本要求

推薦使用 JDK 17 或更高版本(JPackage 在 JDK 16 才成為標準功能,JDK 17 是 LTS 版本)

確認 JPackage 可用:

jpackage --version

2.2 平臺特定工具

根據(jù)目標操作系統(tǒng),需要安裝對應的打包工具:

Windows

WiX Toolset 3.11+(用于生成 .msi 安裝包)
下載地址:wixtoolset.org/
安裝后將 bin 目錄添加到系統(tǒng)環(huán)境變量 PATH

macOS

Xcode 命令行工具(用于生成 .dmg/.pkg

xcode-select --install

Linux

Debian/Ubuntu:安裝 fakeroot

sudo apt-get install fakeroot

RedHat/CentOS:安裝 rpm-build

sudo yum install rpm-build

三、Spring Boot 項目準備

3.1 示例項目結構

假設我們有一個標準的 Spring Boot 項目:

my-springboot-app/
├── src/
│   └── main/
│       ├── java/
│       └── resources/
├── pom.xml
└── target/
    └── my-app-1.0.0.jar

3.2 構建可執(zhí)行 JAR

首先使用 Maven 或 Gradle 構建項目:

# Maven
mvn clean package

# Gradle
gradle clean build

確保生成的 JAR 包是可執(zhí)行的(Spring Boot 默認打包方式)。

四、使用 JPackage 打包

4.1 基礎打包命令

以下是一個基礎的 JPackage 命令示例(以 Windows 為例):

jpackage \
  --input target \
  --name MySpringBootApp \
  --main-jar my-app-1.0.0.jar \
  --main-class org.springframework.boot.loader.JarLauncher \
  --type msi \
  --app-version 1.0.0 \
  --vendor "我的公司" \
  --description "基于 Spring Boot 的企業(yè)級應用" \
  --icon src/main/resources/app-icon.ico \
  --win-dir-chooser \
  --win-menu \
  --win-shortcut

參數(shù)說明

參數(shù)說明
--input輸入目錄,包含 JAR 包和依賴
--name應用名稱
--main-jar主 JAR 包文件名
--main-class主類(Spring Boot 使用 JarLauncher
--type安裝包類型(msi/exe/dmg/pkg/deb/rpm
--app-version應用版本號
--icon應用圖標(Windows 用 .ico,macOS 用 .icns
--win-dir-chooser允許用戶選擇安裝目錄
--win-menu創(chuàng)建開始菜單項
--win-shortcut創(chuàng)建桌面快捷方式

4.2 自定義 JRE(使用 jlink)

為了減小安裝包體積,可以使用 jlink 裁剪 JRE,僅包含必要的模塊。

步驟 1:查找應用依賴的模塊

jdeps --list-deps target/my-app-1.0.0.jar

輸出示例:

java.base
java.logging
java.sql
java.naming
java.desktop
...

步驟 2:使用 jlink 創(chuàng)建自定義 JRE

jlink \
  --add-modules java.base,java.logging,java.sql,java.naming,java.desktop,java.xml,java.management \
  --output custom-jre \
  --strip-debug \
  --no-header-files \
  --no-man-pages \
  --compress=2

步驟 3:使用自定義 JRE 打包

jpackage \
  --input target \
  --name MySpringBootApp \
  --main-jar my-app-1.0.0.jar \
  --main-class org.springframework.boot.loader.JarLauncher \
  --type msi \
  --runtime-image custom-jre \
  --app-version 1.0.0 \
  --vendor "我的公司"

注意:Spring Boot 應用通常依賴較多模塊,建議先不裁剪 JRE,確保功能正常后再優(yōu)化。

五、不同平臺的打包示例

5.1 Windows 平臺(MSI)

jpackage \
  --input target \
  --name MyApp \
  --main-jar my-app-1.0.0.jar \
  --main-class org.springframework.boot.loader.JarLauncher \
  --type msi \
  --app-version 1.0.0 \
  --icon src/main/resources/app.ico \
  --win-dir-chooser \
  --win-menu \
  --win-shortcut \
  --win-menu-group "我的應用"

5.2 macOS 平臺(DMG)

jpackage \
  --input target \
  --name MyApp \
  --main-jar my-app-1.0.0.jar \
  --main-class org.springframework.boot.loader.JarLauncher \
  --type dmg \
  --app-version 1.0.0 \
  --icon src/main/resources/app.icns \
  --mac-package-name "com.mycompany.myapp" \
  --mac-package-identifier "com.mycompany.myapp"

5.3 Linux 平臺(DEB)

jpackage \
  --input target \
  --name myapp \
  --main-jar my-app-1.0.0.jar \
  --main-class org.springframework.boot.loader.JarLauncher \
  --type deb \
  --app-version 1.0.0 \
  --icon src/main/resources/app.png \
  --linux-shortcut \
  --linux-menu-group "Development"

六、集成到 Maven 構建流程

為了自動化打包流程,可以將 JPackage 命令集成到 Maven 的 pom.xml 中。

6.1 使用 exec-maven-plugin

pom.xml 中添加以下插件配置:

<build>
    <plugins>
        <!-- Spring Boot Maven 插件 -->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>

        <!-- JPackage 打包插件 -->
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>3.1.0</version>
            <executions>
                <execution>
                    <id>jpackage</id>
                    <phase>package</phase>
                    <goals>
                        <goal>exec</goal>
                    </goals>
                    <configuration>
                        <executable>jpackage</executable>
                        <arguments>
                            <argument>--input</argument>
                            <argument>target</argument>
                            <argument>--name</argument>
                            <argument>MySpringBootApp</argument>
                            <argument>--main-jar</argument>
                            <argument>${project.build.finalName}.jar</argument>
                            <argument>--main-class</argument>
                            <argument>org.springframework.boot.loader.JarLauncher</argument>
                            <argument>--type</argument>
                            <argument>msi</argument>
                            <argument>--app-version</argument>
                            <argument>${project.version}</argument>
                            <argument>--vendor</argument>
                            <argument>我的公司</argument>
                            <argument>--win-dir-chooser</argument>
                            <argument>--win-menu</argument>
                            <argument>--win-shortcut</argument>
                        </arguments>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

6.2 執(zhí)行構建

mvn clean package

構建完成后,安裝包將生成在項目根目錄下。

七、總結

JPackage 工具為 Java 應用的分發(fā)提供了強大的支持,從簡單的命令行操作到集成到自動化構建流程,JPackage 都能很好地滿足需求。

在實際項目中,建議根據(jù)應用特點選擇合適的打包策略,平衡安裝包體積、部署便利性和運行性能,為用戶提供最佳的使用體驗。

以上就是基于SpringBoot+JPackage構建獨立安裝包的操作流程的詳細內容,更多關于SpringBoot JPackage構建獨立安裝包的資料請關注腳本之家其它相關文章!

相關文章

  • Springboot 跨域配置無效及接口訪問報錯的解決方法

    Springboot 跨域配置無效及接口訪問報錯的解決方法

    這篇文章主要介紹了Springboot 跨域配置無效及接口訪問報錯的解決方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • linux用java -jar啟動jar包緩慢的問題

    linux用java -jar啟動jar包緩慢的問題

    這篇文章主要介紹了linux用java -jar啟動jar包緩慢的問題,具有很好的參考價值,希望對大家有所幫助,
    2023-09-09
  • java對double數(shù)組排序示例分享

    java對double數(shù)組排序示例分享

    這篇文章主要介紹了java對double數(shù)組排序示例,代碼簡單,下面我們直接上代碼,需要的朋友可以參考下
    2014-03-03
  • 一文看懂RabbitMQ消息丟失如何防止

    一文看懂RabbitMQ消息丟失如何防止

    這篇文章主要介紹了RabbitMQ消息丟失的場景,以及如何保證信息不丟失,看完這篇文章一定可以幫助你RabbitMQ有更深的理解,需要的朋友可以參考下
    2023-03-03
  • Spring Cloud Gateway入門解讀

    Spring Cloud Gateway入門解讀

    本篇文章主要介紹了Spring Cloud Gateway入門解讀,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • ?java簡介及環(huán)境搭建

    ?java簡介及環(huán)境搭建

    這篇文章主要介紹了java簡介及環(huán)境搭建,文章主要介紹Java的發(fā)展史及環(huán)境搭建,對正在學Java的你有一定的參考價值,需要的小伙伴可以參考一下
    2022-03-03
  • 解決Maven的pom.xml中設置repository不起作用問題

    解決Maven的pom.xml中設置repository不起作用問題

    這篇文章主要介紹了解決Maven的pom.xml中設置repository不起作用問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • SpringBoot整合Shiro兩種方式(總結)

    SpringBoot整合Shiro兩種方式(總結)

    這篇文章主要介紹了SpringBoot整合Shiro兩種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-06-06
  • JSON--List集合轉換成JSON對象詳解

    JSON--List集合轉換成JSON對象詳解

    這篇文章主要介紹了List集合轉換成JSON對象,小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。
    2017-01-01
  • Java中MessageDigest來實現(xiàn)數(shù)據(jù)加密的方法

    Java中MessageDigest來實現(xiàn)數(shù)據(jù)加密的方法

    這篇文章主要介紹了Java中MessageDigest來實現(xiàn)數(shù)據(jù)加密的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05

最新評論

唐河县| 芜湖县| 仙游县| 临邑县| 东丰县| 南阳市| 望谟县| 巴彦县| 四平市| 宣化县| 宜都市| 黄龙县| 宝兴县| 达日县| 宜兰县| 永城市| 呼伦贝尔市| 颍上县| 博爱县| 固原市| 临夏市| 观塘区| 固阳县| 平阳县| 响水县| 长泰县| 阿鲁科尔沁旗| 疏附县| 台东市| 榆中县| 临夏县| 大姚县| 逊克县| 康平县| 苍梧县| 崇礼县| 龙山县| 沁水县| 郁南县| 错那县| 信阳市|