Spring Boot Maven项目War包WEB-INF/classes为空致启动失败求助
解决Spring Boot Maven打包War后WEB-INF/classes为空及主类找不到的问题
以下是针对你遇到问题的具体解决步骤:
补全POM必填坐标
你的POM缺失了<groupId>标签,这是Maven项目的核心必填配置,缺失会导致构建路径异常,无法正确打包编译产物。在<parent>标签后添加项目的groupId(可根据实际情况修改):<groupId>com.your-project-group</groupId> <artifactId>your-project-artifact</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging>确认项目目录结构符合Maven标准
确保Java源码存放于src/main/java目录,资源文件存放于src/main/resources。如果自定义了源码路径,需在POM的<build>节点中明确配置:<build> <sourceDirectory>src/main/java</sourceDirectory> <!-- 其他构建配置 --> </build>调整主类继承SpringBootServletInitializer
打包War包时,Spring Boot主类需要继承SpringBootServletInitializer以适配Servlet容器部署,同时确保打包逻辑正确识别主类:@SpringBootApplication public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); } public static void main(String[] args) { SpringApplication.run(Application.class, args); } }执行完整Maven构建命令
清理旧构建缓存并重新编译打包,过程中检查控制台是否有编译错误(如JDK版本不匹配、Lombok注解未处理等):mvn clean install注意确认虚拟机中的JDK版本与POM配置的
java.version=17一致,同时确保IDE已安装Lombok插件以支持注解编译。完善Spring Boot Maven插件配置
为插件添加executions配置,确保其参与War包的重打包流程:<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>start.Application</mainClass> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin>
内容的提问来源于stack exchange,提问作者alia
相关产品推荐
相关产品推荐

