关于拳馆网站建设计划书,wordpress怎么做手机端,人工智能ai写作网站免费,沈阳网站制作公司和服务器前言 从 JDK 14 开始#xff0c;Java 官方引入了 JPackage 工具#xff08;在 JDK 16 正式成为标准功能#xff09;#xff0c;它能够将 Java 应用打包成特定平台的原生安装包#xff0c;自带定制化的 JRE 运行环境。这意味着用户无需提前安装 Java 环境#xff0c;双击…前言从 JDK 14 开始Java 官方引入了JPackage工具在 JDK 16 正式成为标准功能它能够将 Java 应用打包成特定平台的原生安装包自带定制化的 JRE 运行环境。这意味着用户无需提前安装 Java 环境双击安装包即可完成应用部署极大地简化了交付流程。本文将介绍如何使用 JPackage 工具将 Spring Boot 项目打包成 Windows、macOS 或 Linux 平台的原生安装包。一、JPackage 简介1.1 什么是 JPackageJPackage 是 JDK 自带的打包工具位于$JAVA_HOME/bin目录下。它的核心功能是生成平台原生安装包Windows 的.exe/.msi、macOS 的.dmg/.pkg、Linux 的.deb/.rpm自定义 JRE使用jlink工具裁剪 JDK仅打包应用所需的模块大幅减小安装包体积简化部署用户无需预装 Java 环境安装包自带运行时1.2 JPackage 的优势传统部署方式JPackage 方式需要预装 JRE/JDK自带 JRE无需额外安装环境版本可能不匹配绑定特定 JRE 版本环境一致手动编写启动脚本自动生成启动器跨平台需要多套脚本一键生成各平台安装包二、环境准备2.1 JDK 版本要求推荐使用 JDK 17 或更高版本JPackage 在 JDK 16 才成为标准功能JDK 17 是 LTS 版本确认 JPackage 可用jpackage --version2.2 平台特定工具根据目标操作系统需要安装对应的打包工具WindowsWiX Toolset 3.11用于生成.msi安装包 下载地址https://wixtoolset.org/ 安装后将bin目录添加到系统环境变量PATHmacOSXcode 命令行工具用于生成.dmg/.pkgxcode-select --installLinuxDebian/Ubuntu安装fakerootsudo apt-get install fakerootRedHat/CentOS安装rpm-buildsudo 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.jar3.2 构建可执行 JAR首先使用 Maven 或 Gradle 构建项目## Maven mvn clean package ## Gradle gradle clean build确保生成的 JAR 包是可执行的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 的企业级应用 \ --icon src/main/resources/app-icon.ico \ --win-dir-chooser \ --win-menu \ --win-shortcut参数说明参数说明--input输入目录包含 JAR 包和依赖--name应用名称--main-jar主 JAR 包文件名--main-class主类Spring Boot 使用JarLauncher--type安装包类型msi/exe/dmg/pkg/deb/rpm--app-version应用版本号--icon应用图标Windows 用.icomacOS 用.icns--win-dir-chooser允许用户选择安装目录--win-menu创建开始菜单项--win-shortcut创建桌面快捷方式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 创建自定义 JREjlink \ --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 \ --compress2步骤 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确保功能正常后再优化。五、不同平台的打包示例5.1 Windows 平台MSIjpackage \ --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 平台DMGjpackage \ --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.myapp5.3 Linux 平台DEBjpackage \ --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 groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId /plugin !-- JPackage 打包插件 -- plugin groupIdorg.codehaus.mojo/groupId artifactIdexec-maven-plugin/artifactId version3.1.0/version executions execution idjpackage/id phasepackage/phase goals goalexec/goal /goals configuration executablejpackage/executable arguments argument--input/argument argumenttarget/argument argument--name/argument argumentMySpringBootApp/argument argument--main-jar/argument argument${project.build.finalName}.jar/argument argument--main-class/argument argumentorg.springframework.boot.loader.JarLauncher/argument argument--type/argument argumentmsi/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 /build6.2 执行构建mvn clean package构建完成后安装包将生成在项目根目录下。