spring boot项目打包成可执行jar的核心是使用spring-boot-maven-plugin或spring-boot-gradle-plugin执行repackage,将应用代码、依赖、jarlauncher及配置整合为单个java -jar可运行的jar;需在pom.xml中配置插件并确保packaging为jar,执行mvn clean package后生成target/myapp-1.0.0.jar及.original备份文件。

Spring Boot 项目打包成可执行 JAR 文件,核心是使用 spring-boot-maven-plugin(Maven)或 spring-boot-gradle-plugin(Gradle)完成“重打包”(repackage),把应用代码、依赖库、启动引导类(如 JarLauncher)和配置文件一并整合进单个 JAR,并确保能直接用 java -jar 启动。
确保 Maven 配置正确
在 pom.xml 的 <build></build> 节点中声明插件,无需手动指定主类(除非有特殊需求):
-
<packaging>jar</packaging>必须存在(默认即为 jar) - 添加
spring-boot-maven-plugin,版本需与 Spring Boot 版本兼容(如 3.1.x 对应插件 3.1.0) - 插件会自动识别含
public static void main(String[] args)的启动类;也可显式配置<mainclass>com.example.Application</mainclass>
执行打包命令
在项目根目录运行:
-
mvn clean package -DskipTests:清理旧构建、编译、测试(跳过)、打包 - 成功后,JAR 出现在
target/目录下,例如:myapp-1.0.0.jar - 注意:该 JAR 是“可执行 JAR”,不是普通 JAR;同时还会生成一个
xxx.jar.original(原始未重打包的 JAR)
验证并运行
确认 JAR 可执行的关键是检查其 MANIFEST.MF 中是否包含:
-
Start-Class: com.example.Application(你的启动类) -
Main-Class: org.springframework.boot.loader.JarLauncher(Spring Boot 提供的启动器)
运行方式很简单:
java -jar target/myapp-1.0.0.jar- 若需后台运行并记录日志,可用:
nohup java -jar myapp-1.0.0.jar > app.log 2>&1 &
常见注意事项
避免打包失败或运行报错:
- 多模块项目:确保只有启动模块(含
@SpringBootApplication)启用spring-boot-maven-plugin,父 POM 不要重复配置 - 第三方 JAR 未托管在中央仓库:先用
mvn install:install-file安装到本地仓库,再在pom.xml中声明依赖 - 资源文件未打包:确认
src/main/resources下的application.yml等文件未被 Mavenresources插件过滤掉 - 想分离依赖提升部署效率:可启用分层 JAR(Layered JAR),配合容器镜像优化构建缓存
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











