將SpringBoot項目打包成EXE文件的完整教程(多種方式)
前言
本教程將詳細介紹如何將SpringBoot 3項目打包成Windows平臺下的EXE可執(zhí)行文件。雖然SpringBoot本身是為Java應用設計的,通常以JAR文件形式運行,但通過一些工具我們可以將其轉換為更友好的EXE格式,方便Windows用戶使用。
準備工作
1. 環(huán)境要求
- JDK 17或更高版本(SpringBoot 3要求)
- Maven或Gradle構建工具
- Windows操作系統
- 已有的SpringBoot 3項目
2. 項目準備
確保你的SpringBoot 3項目能夠正常運行,可以通過以下命令測試:
mvn clean spring-boot:run # 或 gradle bootRun
方法一:使用jpackage工具(推薦)
jpackage是JDK 14引入的工具,在JDK 17中已經成熟,是官方推薦的打包方式。
1. 打包為可執(zhí)行的JAR文件
首先,使用Maven或Gradle將項目打包為可執(zhí)行的JAR文件:
??Maven項目:??
mvn clean package
??Gradle項目:??
gradle build
打包完成后,你會在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/??參數說明:??
--name: 應用程序名稱--input: 包含JAR文件的目錄--main-jar: 主JAR文件名--main-class: 你的SpringBoot主類全限定名--type: 輸出類型,這里使用exe--java-options: JVM參數--win-shortcut: 創(chuàng)建桌面快捷方式--win-menu: 添加到開始菜單--output: 輸出目錄
??如果不知道主類名:??
可以查看你的pom.xml中的<mainClass>配置,或者主啟動類通常帶有@SpringBootApplication注解。
4. 完整示例(以SpringBoot 3項目為例)
假設你的項目結構如下:
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(更靈活的方案)
如果你需要更多自定義選項,可以使用Launch4j將JAR包裝為EXE,再使用Inno Setup創(chuàng)建安裝程序。
1. 打包為可執(zhí)行JAR
同上,使用Maven或Gradle打包為可執(zhí)行JAR。
2. 下載和安裝Launch4j
- 訪問 http://launch4j.sourceforge.net/ 下載Launch4j
- 解壓并運行l(wèi)aunch4j.exe
3. 使用Launch4j配置
在"Basic"標簽頁:
- Output file: 選擇輸出EXE路徑,如
dist/MySpringBootApp.exe - Jar: 選擇你的可執(zhí)行JAR文件
- Don't wrap the jar, launch only: 不勾選(如果要包含JAR在EXE內則勾選)
- Output file: 選擇輸出EXE路徑,如
在"JRE"標簽頁:
- Min JRE version: 17 (根據你的JDK版本設置)
- 可以設置最大版本等
點擊"Build Wrapper"生成EXE
4. (可選)使用Inno Setup創(chuàng)建安裝程序
- 下載Inno Setup: http://www.jrsoftware.org/isinfo.php
- 創(chuàng)建安裝腳本,將EXE、JAR、依賴等打包為安裝程序
方法三:使用第三方工具(如Badass Runtime Plugin)
對于Maven項目,可以使用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
注意事項
??JRE依賴??:生成的EXE仍然需要JRE運行。你可以:
- 要求用戶預先安裝JRE
- 使用jpackage的
--runtime-image參數指定JRE - 使用工具打包JRE(會增加EXE大?。?/li>
??文件大小??:包含JRE的EXE文件會比較大(可能50MB+)
??性能??:打包為EXE不會提升性能,只是包裝形式
??SpringBoot特性??:所有SpringBoot特性(自動配置、嵌入式服務器等)都保持不變
??端口沖突??:確保你的應用配置了合適的端口,特別是打包后可能在不同環(huán)境運行
測試生成的EXE文件
- 進入輸出目錄(如
dist/) - 雙擊EXE文件或在命令行運行
- 應該能正常啟動你的SpringBoot應用
高級配置
1. 打包時包含資源文件
確保你的src/main/resources/下的文件都被正確打包,SpringBoot會自動處理。
2. 配置文件外部化
建議將配置文件(如application.properties)放在外部,便于修改:
java -jar your-app.jar --spring.config.location=file:/path/to/application.properties
3. 日志配置
確保日志配置(如logback.xml)正確,打包后日志功能應正常工作。
總結
將SpringBoot 3項目打包為EXE文件主要依賴于jpackage工具,這是目前最官方和可靠的方法。通過以上步驟,你可以為Windows用戶提供更友好的應用程序體驗。記住,雖然包裝形式變?yōu)镋XE,但你的應用仍然是完整的SpringBoot應用,所有特性都保持不變。
如果在打包過程中遇到問題,可以檢查:
- JDK版本是否正確
- 主類名是否正確
- 依賴是否完整
- 打包命令參數是否正確
到此這篇關于將SpringBoot項目打包成EXE文件的文章就介紹到這了,更多相關SpringBoot項目打包成EXE文件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBoot+Nacos+MySQL微服務問題及解決方案
Java微服務啟動失敗排查流程:檢查日志、服務狀態(tài)、端口監(jiān)聽、網絡連通、配置與Nacos同步、數據庫連接、系統資源及啟動參數,必要時打包診斷信息并共享文檔2025-09-09

