springBoot 怎么打包成jar包
时间: 2025-08-04 22:38:55 浏览: 17
<think>我们正在回答用户关于如何使用Maven或Gradle将Spring Boot项目打包为可执行的JAR文件的问题。
根据引用,我们知道有几种方法:使用JAR命令、Maven、Gradle以及打包Spring Boot应用。但用户明确提到Maven或Gradle,因此我们重点介绍这两种。
同时,引用中提到了Spring Boot Gradle插件的使用,以及如何修改Gradle打包生成的Jar名称,这些可以作为补充内容。
回答结构:
1. 使用Maven打包Spring Boot项目
2. 使用Gradle打包Spring Boot项目
3. 补充:如何修改生成的Jar包名称(可选,因为用户可能也关心)
注意:用户的问题是关于“可执行的JAR文件”,因此我们要确保打包后的JAR是可执行的(即包含所有依赖并可通过`java -jar`运行)。
根据引用[1]和[3],我们可以知道Maven和Gradle都有相应的插件来支持Spring Boot的打包。
步骤:
一、使用Maven打包
- 确保项目是Spring Boot项目,并且使用了`spring-boot-starter-parent`作为父项目(或者引入了Spring Boot Maven插件)
- 在pom.xml中配置Spring Boot Maven插件
- 使用mvn命令打包
二、使用Gradle打包
- 在build.gradle中应用Spring Boot Gradle插件
- 使用gradle命令打包
三、修改Jar包名称(可选,根据引用[4])
最后,生成相关问题。</think>### 如何将 Spring Boot 项目打包为可执行 JAR 文件
Spring Boot 项目可通过 Maven 或 Gradle 打包成独立可执行的 JAR 文件,包含所有依赖项和嵌入式服务器(如 Tomcat),可直接通过 `java -jar` 运行。以下是详细步骤:
#### 一、使用 Maven 打包
1. **配置插件**
在 `pom.xml` 中添加 Spring Boot Maven 插件:
```xml
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
```
2. **执行打包命令**
在项目根目录运行:
```bash
mvn clean package
```
- 生成的 JAR 位于 `target/` 目录
- 默认命名格式:`{项目名}-{版本}.jar`(例如 `demo-0.0.1-SNAPSHOT.jar`)
3. **运行 JAR**
```bash
java -jar target/demo-0.0.1-SNAPSHOT.jar
```
> **关键原理**:该插件会将所有依赖库打包进 JAR 的 `BOOT-INF/lib/` 目录,并生成启动类加载逻辑[^2]。
#### 二、使用 Gradle 打包
1. **配置插件**
在 `build.gradle` 中添加 Spring Boot Gradle 插件:
```groovy
plugins {
id 'org.springframework.boot' version '3.2.0' // 使用最新版本
id 'io.spring.dependency-management' version '1.1.4'
}
```
2. **执行打包命令**
在项目根目录运行:
```bash
./gradlew clean bootJar # Linux/macOS
gradlew.bat clean bootJar # Windows
```
- 生成的 JAR 位于 `build/libs/` 目录
3. **自定义 JAR 名称**(可选)
在 `build.gradle` 中添加:
```groovy
bootJar {
archiveFileName = "my-app.jar" // 自定义名称
}
```
4. **运行 JAR**
```bash
java -jar build/libs/my-app.jar
```
#### 三、验证打包结果
- **检查 JAR 结构**:
```bash
jar tf demo-0.0.1-SNAPSHOT.jar
```
应包含:
```
BOOT-INF/classes/ # 项目编译文件
BOOT-INF/lib/ # 依赖库
META-INF/MANIFEST.MF # 指定启动类
```
- **查看启动类**:
`MANIFEST.MF` 中需包含:
```
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.example.Application # 你的主类
```
> **注意**:需确保主类包含 `@SpringBootApplication` 注解和 `main` 方法[^3]。
#### 常见问题解决
- **打包失败**:检查 Maven/Gradle 版本兼容性(Spring Boot 3.x 需 Java 17+)
- **无法运行**:确认是否遗漏 `spring-boot-maven-plugin` 或 `bootJar` 任务
- **依赖缺失**:使用 `mvn dependency:tree` 或 `gradlew dependencies` 检查依赖冲突
通过以上步骤,可生成独立运行的 JAR 文件,便于部署到服务器或容器环境[^1][^4]。
---
### 相关问题
1. **Spring Boot 可执行 JAR 和普通 JAR 有什么区别?**
> 可执行 JAR 包含嵌入式服务器和依赖库,无需外部部署;普通 JAR 需单独配置依赖和服务器。
2. **如何为 Spring Boot JAR 添加外部配置文件?**
> 可通过 `--spring.config.location` 参数指定外部配置:
> ```bash
> java -jar app.jar --spring.config.location=file:/path/to/config/
> ```
3. **如何优化 Spring Boot JAR 的启动速度?**
> 可考虑:
> - 启用 Spring Boot 2.4+ 的**分层打包**(Layer Tools)
> - 使用 **GraalVM 原生编译**生成轻量级二进制文件
4. **Docker 中如何高效部署 Spring Boot JAR?**
> 建议使用多阶段构建:
> ```dockerfile
> FROM eclipse-temurin:17-jdk as builder
> WORKDIR /app
> COPY . .
> RUN ./gradlew bootJar
>
> FROM eclipse-temurin:17-jre
> COPY --from=builder /app/build/libs/app.jar /app.jar
> ENTRYPOINT ["java","-jar","/app.jar"]
> ```
[^1]: 使用JAR命令打包JAR文件使用Maven打包使用Gradle打包打包Spring Boot应用
[^2]: spring boot打包原理,maven及gradle下的构建解析
[^3]: Spring Boot Gradle 插件使用指南
[^4]: 基于Gradle修改Spring Boot项目打包生成的Jar名称
阅读全文
相关推荐




















