全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-18 5 分钟 ✍️ juanwangdev

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不含依赖

📝 发现内容有误?点击此处直接编辑

← 上一篇 SpringBoot命令行运行JAR
下一篇 → SpringBoot项目结构
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库