springboot工程如何打包成可执行jar ?
时间: 2025-08-27 12:00:43 AIGC 浏览: 11
<think>我们正在讨论如何将Spring Boot工程打包成可执行jar。根据引用[1]和[5],Spring Boot默认打包方式就是生成一个可执行的fat jar(包含所有依赖和内置Tomcat)。以下是如何实现:
### 方法一:使用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. 执行Maven打包命令:
```bash
mvn clean package
```
3. 生成的jar位于`target/`目录,文件名格式为`{project-name}-{version}.jar`,可直接运行:
```bash
java -jar target/your-project.jar
```
### 方法二:使用Gradle
1. 在`build.gradle`中应用插件:
```groovy
plugins {
id 'org.springframework.boot' version '3.2.0'
}
```
2. 执行打包:
```bash
./gradlew bootJar
```
3. 生成的jar在`build/libs/`目录下。
### 注意事项
1. **主类检测**:插件会自动检测带有`@SpringBootApplication`注解的主类[^1]。
2. **打包失败处理**:若提示"找不到主类",可手动指定主类:
```xml
<configuration>
<mainClass>com.example.YourMainClass</mainClass>
</configuration>
```
### 生成不可执行jar(供依赖使用)
若需同时生成普通jar(作为库),参考引用[4]配置:
```xml
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<classifier>exec</classifier> <!-- 可执行jar添加exec后缀 -->
</configuration>
</plugin>
```
此时将生成两个jar:
- `your-project.jar` → 普通jar(不含依赖)
- `your-project-exec.jar` → 可执行jar
---
### 相关问题
1. Spring Boot可执行jar和普通war包部署有何区别?
2. 如何排除Spring Boot内嵌Tomcat并使用外部Tomcat部署?
3. 多模块项目中如何正确配置Spring Boot打包插件?
4. 如何为Spring Boot可执行jar添加外部配置文件?
5. Spring Boot 3.x在打包机制上有哪些更新?
[^1]: Spring Boot项目打包成可执行jar的方法
[^4]: 同时生成可执行jar和普通jar的方法
[^5]: Spring Boot Maven插件基本配置</think>### Spring Boot工程打包成可执行JAR的方法
#### 一、基础配置(Maven项目)
1. **添加Spring Boot Maven插件**(关键步骤)
在`pom.xml`中添加以下配置:
```xml
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
```
这是生成可执行JAR的核心插件[^5]。
2. **执行打包命令**
```bash
mvn clean package
```
生成的JAR位于`target/`目录下,文件名格式为`{project-name}-{version}.jar`
3. **运行JAR**
```bash
java -jar target/your-project-0.0.1.jar
```
---
#### 二、特殊场景处理
1. **自定义主类**(当自动检测失败时)
```xml
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.example.YourApplication</mainClass>
</configuration>
</plugin>
```
2. **同时生成可执行JAR和普通JAR**
```xml
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<classifier>exec</classifier>
</configuration>
</plugin>
```
将生成两个文件:
- `your-project.jar`(普通JAR)
- `your-project-exec.jar`(可执行JAR)[^4]
---
#### 三、Gradle项目配置
1. **添加插件**
在`build.gradle`中:
```groovy
plugins {
id 'org.springframework.boot' version '3.2.0'
id 'io.spring.dependency-management' version '1.1.4'
}
```
2. **打包命令**
```bash
./gradlew bootJar
```
---
#### 四、验证打包结果
1. 检查MANIFEST.MF文件:
```bash
unzip -p target/*.jar META-INF/MANIFEST.MF
```
应包含:
```
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.example.YourApplication
```
2. 查看依赖是否包含:
```bash
jar tf target/*.jar | grep BOOT-INF/lib
```
---
### 常见问题解决
| 问题现象 | 解决方案 |
|---------|----------|
| "没有主清单属性" | 确认是否添加了`spring-boot-maven-plugin` |
| 依赖缺失 | 检查`mvn dependency:tree`是否有冲突 |
| 启动时报ClassNotFound | 执行`mvn clean package`重新打包 |
| 配置文件未加载 | 确保`application.properties`在`src/main/resources` |
---
### 相关问题
1. Spring Boot可执行JAR和普通WAR包有何本质区别?
2. 如何为Spring Boot可执行JAR添加外部配置文件?
3. 多模块项目中如何正确配置Spring Boot打包插件?
4. Spring Boot 3.x在打包机制上有哪些重大更新?
5. 如何为可执行JAR添加JMX监控支持?
[^1]: Spring Boot项目打包成JAR的基本原理
[^4]: 同时生成可执行JAR和普通JAR的方法
[^5]: Spring Boot Maven插件核心配置
阅读全文
相关推荐




















