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

父POM构建Spring Boot JSP项目出现404问题排查

问题原因及解决方案

核心原因:父POM构建时未正确处理JSP资源的打包逻辑,导致Jar包中缺失JSP文件或路径不正确

以下是具体的几种可能情况及解决办法:

  • 父POM的资源配置覆盖了子项目的资源规则
    父POM中如果定义了<resources>节点,可能未包含JSP所在的src/main/webapp目录,导致构建时JSP文件没有被打包进Jar。子项目单独构建时,默认的Maven资源规则会处理该目录,但父项目构建时会使用父POM的配置覆盖。
    解决:在子项目的pom.xml中添加独立的资源配置,明确包含JSP路径:

    <build>
      <resources>
        <resource>
          <directory>src/main/webapp</directory>
          <targetPath>META-INF/resources</targetPath>
          <includes>
            <include>**/*.jsp</include>
          </includes>
        </resource>
        <!-- 保留其他默认资源目录 -->
        <resource>
          <directory>src/main/resources</directory>
        </resource>
      </resources>
    </build>
    
  • 父POM的Spring Boot Maven插件配置冲突
    父POM中如果配置了spring-boot-maven-plugin,但未正确设置资源打包参数,会导致子项目的JSP无法被正确打包。Spring Boot打包包含JSP的Jar需要插件支持将web资源复制到正确位置,父项目的插件配置可能没有传递正确的参数给子项目。
    解决:在子项目的pom.xml中单独配置Spring Boot插件,确保资源被正确处理:

    <build>
      <plugins>
        <plugin>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
          <configuration>
            <includes>
              <include>**/*.jsp</include>
            </includes>
          </configuration>
        </plugin>
      </plugins>
    </build>
    
  • 父项目构建时未执行完整的子项目生命周期
    父项目执行mvn clean install时,可能因模块依赖顺序或阶段跳过问题,未触发子项目的process-resources阶段,导致JSP未被复制到Jar的正确路径。而子项目单独构建时会完整执行所有阶段。
    解决:构建时明确指定子项目并触发依赖模块构建:mvn clean install -pl nu-pages -am(-pl指定目标模块,-am自动构建依赖模块)

  • 子项目打包方式被父POM干扰
    父POM若强制设置了打包方式,可能影响子项目的JSP打包逻辑。虽然Jar包可运行JSP,但Spring Boot对JSP的支持在War包下更稳定。
    解决:在子项目pom.xml中明确设置<packaging>jar</packaging>(或<packaging>war</packaging>,若采用War包部署),避免受父POM打包方式影响。


内容的提问来源于stack exchange,提问作者Al Fraco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 06:54:50