SpringBoot打包为JAR
SpringBoot 打包为可执行 JAR,内置所有依赖。
配置打包插件
XML
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.example.MyApplication</mainClass>
</configuration>
</plugin>
</plugins>
</build>
执行打包
Bash
# Maven打包
mvn clean package
# 输出位置
target/my-app-1.0.0.jar
JAR包结构
Bash
my-app-1.0.0.jar
├── BOOT-INF/
│ ├── classes/ # 应用代码和资源
│ │ ├── com/example/
│ │ └── application.yml
│ └── lib/ # 依赖库
│ ├── spring-boot-starter-web.jar
│ ├── tomcat-embed.jar
│ └── ...
├── META-INF/
│ └── MANIFEST.MF # 启动信息
└── org/springframework/boot/loader/ # SpringBoot加载器
MANIFEST.MF内容
XML
Manifest-Version: 1.0
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.example.MyApplication
Spring-Boot-Version: 3.2.0
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
打包命令选项
XML
# 清理后打包
mvn clean package
# 跳过测试打包
mvn clean package -DskipTests
# 跳过测试编译和执行
mvn clean package -Dmaven.test.skip=true
# 指定配置文件打包
mvn clean package -Dspring.profiles.active=prod
pom.xml打包配置
Bash
<project>
<!-- 打包类型 -->
<packaging>jar</packaging>
<build>
<!-- 最终包名 -->
<finalName>${project.artifactId}</finalName>
<plugins>
<!-- SpringBoot打包插件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
打包产物
groovy
target/
├── classes/ # 编译输出
├── my-app-1.0.0.jar # 可执行JAR(完整包)
├── my-app-1.0.0.jar.original # 原始JAR(不含依赖)
└── test-classes/ # 测试编译输出
| 文件 | 说明 |
|---|---|
| my-app.jar | 可执行JAR,含所有依赖 |
| my-app.jar.original | 原始JAR,不含依赖 |
打包排除依赖
text
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
验证打包结果
text
# 查看JAR内容
jar tf target/my-app.jar | head -20
# 运行JAR测试
java -jar target/my-app.jar --server.port=9090
Gradle打包
text
// build.gradle已包含bootJar任务
// 执行打包
gradle bootJar
// 输出位置
build/libs/my-app-1.0.0.jar
要点总结
- spring-boot-maven-plugin生成可执行JAR
- JAR内含所有依赖和内嵌容器
- mvn clean package执行打包
- 可执行JAR可直接java -jar运行
- .original是原始JAR不含依赖
📝 发现内容有误?点击此处直接编辑