將SpringBoot項(xiàng)目打包成EXE文件的完整教程(多種方式)
前言
本教程將詳細(xì)介紹如何將SpringBoot 3項(xiàng)目打包成Windows平臺(tái)下的EXE可執(zhí)行文件。雖然SpringBoot本身是為Java應(yīng)用設(shè)計(jì)的,通常以JAR文件形式運(yùn)行,但通過一些工具我們可以將其轉(zhuǎn)換為更友好的EXE格式,方便Windows用戶使用。
準(zhǔn)備工作
1. 環(huán)境要求
- JDK 17或更高版本(SpringBoot 3要求)
- Maven或Gradle構(gòu)建工具
- Windows操作系統(tǒng)
- 已有的SpringBoot 3項(xiàng)目
2. 項(xiàng)目準(zhǔn)備
確保你的SpringBoot 3項(xiàng)目能夠正常運(yùn)行,可以通過以下命令測試:
mvn clean spring-boot:run # 或 gradle bootRun
方法一:使用jpackage工具(推薦)
jpackage是JDK 14引入的工具,在JDK 17中已經(jīng)成熟,是官方推薦的打包方式。
1. 打包為可執(zhí)行的JAR文件
首先,使用Maven或Gradle將項(xiàng)目打包為可執(zhí)行的JAR文件:
??Maven項(xiàng)目:??
mvn clean package
??Gradle項(xiàng)目:??
gradle build
打包完成后,你會(huì)在target/(Maven)或build/libs/(Gradle)目錄下找到可執(zhí)行的JAR文件,通常命名為your-project-name-0.0.1-SNAPSHOT.jar或類似的名稱。
2. 下載并安裝WiX Toolset(可選,用于創(chuàng)建MSI安裝包)
jpackage可以生成EXE和MSI安裝包,要生成MSI需要WiX Toolset:
- 訪問 https://wixtoolset.org/ 下載并安裝
3. 使用jpackage打包為EXE
打開命令提示符或PowerShell,執(zhí)行以下命令:
jpackage --name YourAppName \
--input target/ \
--main-jar your-project-name-0.0.1-SNAPSHOT.jar \
--main-class com.yourpackage.YourApplication \
--type exe \
--java-options "-Xmx512m" \
--win-shortcut \
--win-menu \
--output dist/??參數(shù)說明:??
--name: 應(yīng)用程序名稱--input: 包含JAR文件的目錄--main-jar: 主JAR文件名--main-class: 你的SpringBoot主類全限定名--type: 輸出類型,這里使用exe--java-options: JVM參數(shù)--win-shortcut: 創(chuàng)建桌面快捷方式--win-menu: 添加到開始菜單--output: 輸出目錄
??如果不知道主類名:??
可以查看你的pom.xml中的<mainClass>配置,或者主啟動(dòng)類通常帶有@SpringBootApplication注解。
4. 完整示例(以SpringBoot 3項(xiàng)目為例)
假設(shè)你的項(xiàng)目結(jié)構(gòu)如下:
my-springboot-app/
├── pom.xml
└── src/
└── main/
├── java/
│ └── com/
│ └── example/
│ └── demo/
│ └── DemoApplication.java # 主類
└── resources/
└── application.properties??打包步驟:??
- 使用Maven打包:
mvn clean package
- 使用jpackage打包為EXE:
jpackage --name MySpringBootApp \
--input target/ \
--main-jar my-springboot-app-0.0.1-SNAPSHOT.jar \
--main-class com.example.demo.DemoApplication \
--type app-image \
--output dist/app-image- 如果要直接生成EXE安裝包:
jpackage --name MySpringBootApp \
--input target/ \
--main-jar my-springboot-app-0.0.1-SNAPSHOT.jar \
--main-class com.example.demo.DemoApplication \
--type exe \
--win-shortcut \
--win-menu \
--output dist/方法二:使用Launch4j + Inno Setup(更靈活的方案)
如果你需要更多自定義選項(xiàng),可以使用Launch4j將JAR包裝為EXE,再使用Inno Setup創(chuàng)建安裝程序。
1. 打包為可執(zhí)行JAR
同上,使用Maven或Gradle打包為可執(zhí)行JAR。
2. 下載和安裝Launch4j
- 訪問 http://launch4j.sourceforge.net/ 下載Launch4j
- 解壓并運(yùn)行l(wèi)aunch4j.exe
3. 使用Launch4j配置
在"Basic"標(biāo)簽頁:
- Output file: 選擇輸出EXE路徑,如
dist/MySpringBootApp.exe - Jar: 選擇你的可執(zhí)行JAR文件
- Don't wrap the jar, launch only: 不勾選(如果要包含JAR在EXE內(nèi)則勾選)
- Output file: 選擇輸出EXE路徑,如
在"JRE"標(biāo)簽頁:
- Min JRE version: 17 (根據(jù)你的JDK版本設(shè)置)
- 可以設(shè)置最大版本等
點(diǎn)擊"Build Wrapper"生成EXE
4. (可選)使用Inno Setup創(chuàng)建安裝程序
- 下載Inno Setup: http://www.jrsoftware.org/isinfo.php
- 創(chuàng)建安裝腳本,將EXE、JAR、依賴等打包為安裝程序
方法三:使用第三方工具(如Badass Runtime Plugin)
對(duì)于Maven項(xiàng)目,可以使用Badass Runtime Plugin來簡化打包過程。
1. 在pom.xml中添加插件
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.0.0</version>
</plugin>
<!-- Badass Runtime Plugin -->
<plugin>
<groupId>org.beryx</groupId>
<artifactId>badass-runtime-plugin</artifactId>
<version>2.25.0</version>
<configuration>
<mainClass>com.example.demo.DemoApplication</mainClass>
<bundleJre>true</bundleJre> <!-- 可選,打包JRE -->
<jrePath>${env.JAVA_HOME}</jrePath> <!-- 如果不打包JRE -->
<runtimePath>runtime</runtimePath>
<launcherName>MySpringBootApp</launcherName>
<windowsExecutable>true</windowsExecutable>
</configuration>
</plugin>
</plugins>
</build>2. 使用插件打包
mvn clean package badass-runtime:runtime
注意事項(xiàng)
??JRE依賴??:生成的EXE仍然需要JRE運(yùn)行。你可以:
- 要求用戶預(yù)先安裝JRE
- 使用jpackage的
--runtime-image參數(shù)指定JRE - 使用工具打包JRE(會(huì)增加EXE大?。?/li>
??文件大小??:包含JRE的EXE文件會(huì)比較大(可能50MB+)
??性能??:打包為EXE不會(huì)提升性能,只是包裝形式
??SpringBoot特性??:所有SpringBoot特性(自動(dòng)配置、嵌入式服務(wù)器等)都保持不變
??端口沖突??:確保你的應(yīng)用配置了合適的端口,特別是打包后可能在不同環(huán)境運(yùn)行
測試生成的EXE文件
- 進(jìn)入輸出目錄(如
dist/) - 雙擊EXE文件或在命令行運(yùn)行
- 應(yīng)該能正常啟動(dòng)你的SpringBoot應(yīng)用
高級(jí)配置
1. 打包時(shí)包含資源文件
確保你的src/main/resources/下的文件都被正確打包,SpringBoot會(huì)自動(dòng)處理。
2. 配置文件外部化
建議將配置文件(如application.properties)放在外部,便于修改:
java -jar your-app.jar --spring.config.location=file:/path/to/application.properties
3. 日志配置
確保日志配置(如logback.xml)正確,打包后日志功能應(yīng)正常工作。
總結(jié)
將SpringBoot 3項(xiàng)目打包為EXE文件主要依賴于jpackage工具,這是目前最官方和可靠的方法。通過以上步驟,你可以為Windows用戶提供更友好的應(yīng)用程序體驗(yàn)。記住,雖然包裝形式變?yōu)镋XE,但你的應(yīng)用仍然是完整的SpringBoot應(yīng)用,所有特性都保持不變。
如果在打包過程中遇到問題,可以檢查:
- JDK版本是否正確
- 主類名是否正確
- 依賴是否完整
- 打包命令參數(shù)是否正確
到此這篇關(guān)于將SpringBoot項(xiàng)目打包成EXE文件的文章就介紹到這了,更多相關(guān)SpringBoot項(xiàng)目打包成EXE文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java數(shù)據(jù)脫敏實(shí)現(xiàn)的方法總結(jié)
數(shù)據(jù)脫敏,指的是對(duì)某些敏感信息通過脫敏規(guī)則進(jìn)行數(shù)據(jù)的變形,實(shí)現(xiàn)敏感隱私數(shù)據(jù)的可靠保護(hù),本文主要是對(duì)后端數(shù)據(jù)脫敏實(shí)現(xiàn)的簡單總結(jié),希望對(duì)大家有所幫助2023-07-07
Spring?Boot項(xiàng)目傳參校驗(yàn)的最佳實(shí)踐指南
有參數(shù)傳遞的地方都少不了參數(shù)校驗(yàn),在web開發(fā)中前端的參數(shù)校驗(yàn)是為了用戶體驗(yàn),后端的參數(shù)校驗(yàn)是為了安全,下面這篇文章主要給大家介紹了關(guān)于Spring?Boot項(xiàng)目傳參校驗(yàn)的最佳實(shí)踐,需要的朋友可以參考下2022-04-04
SpringBoot+Nacos+MySQL微服務(wù)問題及解決方案
Java微服務(wù)啟動(dòng)失敗排查流程:檢查日志、服務(wù)狀態(tài)、端口監(jiān)聽、網(wǎng)絡(luò)連通、配置與Nacos同步、數(shù)據(jù)庫連接、系統(tǒng)資源及啟動(dòng)參數(shù),必要時(shí)打包診斷信息并共享文檔2025-09-09

