You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何生成含Spring Boot Loader的指定结构SpringBoot可执行Jar

生成Spring Boot可执行Jar的解决方案

要生成你期望的包含BOOT-INF目录结构的可执行Jar,核心是确保spring-boot-maven-plugin执行repackage目标——该目标会将普通Jar重新打包为Spring Boot专属的可执行格式,自动生成BOOT-INF、Spring Boot Loader类和正确的MANIFEST.MF配置。

修改pom.xml配置

调整spring-boot-maven-plugin的配置,确保它在Maven的package阶段触发repackage操作:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <image>
            <name>${docker.image.prefix}/${project.artifactId}</name>
        </image>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>

核心作用说明

repackage目标会完成以下关键操作:

  • 将项目编译后的类文件打包到BOOT-INF/classes目录
  • 将所有依赖Jar复制到BOOT-INF/lib目录
  • 引入Spring Boot Loader相关类到Jar根目录的org/springframework/boot/loader路径
  • 生成包含启动配置的META-INF/MANIFEST.MF(指定Spring Boot Loader的主类和你的应用主类)

验证生成结果

执行打包命令:

mvn clean package

打包完成后,在target目录下找到生成的Jar文件,通过以下命令查看内部结构:

jar tf target/example-1.0.0-SNAPSHOT.jar

此时你会看到完全符合需求的目录结构:BOOT-INF/classes、BOOT-INF/lib、org/springframework/boot/loader以及META-INF。

额外检查点

  1. 确认应用主类存在:项目中必须有标注@SpringBootApplication的主类,Spring Boot插件会自动识别它;如果主类不在默认路径,可通过<mainClass>参数手动指定。
  2. maven-compiler-plugin排除规则:当前配置排除了org/**/*.java,如果你的项目中存在需要编译的org包下代码,需调整该规则避免编译遗漏。

内容的提问来源于stack exchange,提问作者mathew thomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 09:07:14