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

GitHub Action中Spring Boot测试无法读取类路径SQL脚本求助

解决Spring Boot 3测试在GitHub Action中无法读取类路径SQL脚本的问题

以下是针对该场景的排查和解决方向:

  • 检查路径大小写一致性
    Ubuntu系统是大小写敏感的,而Windows/macOS默认不敏感。如果本地开发时文件目录或文件名是H2/dump.sql,但代码里写的是h2/dump.sql,在GitHub Action的Ubuntu runner上就会找不到资源。务必确保代码中addScript的路径和实际src/test/resources下的目录、文件名大小写完全一致。

  • 验证Maven资源复制是否正常
    查看pom.xml的testResources配置,确认没有排除.sql文件或h2目录。可以在GitHub Action的mvn verify步骤前添加调试命令,检查资源是否被正确复制到测试类路径:

    run: ls -la target/test-classes/h2/
    

    如果该目录下没有dump.sql,说明Maven没有把资源打包进去,需要调整pom.xml的资源配置,确保testResources包含该文件:

    <build>
      <testResources>
        <testResource>
          <directory>src/test/resources</directory>
          <includes>
            <include>**/*.sql</include>
          </includes>
        </testResource>
      </testResources>
    </build>
    
  • 调整SQL脚本路径的写法
    尝试去掉路径开头的斜杠,把addScript("/h2/dump.sql")改成addScript("h2/dump.sql"),或者明确加上classpath:前缀:addScript("classpath:h2/dump.sql")。Spring加载类路径资源时,开头的斜杠表示绝对路径,但部分场景下可能因为类加载器的差异导致识别问题,去掉斜杠或使用前缀能避免这类问题。

  • 确认代码库文件是否完整拉取
    在GitHub Action中添加步骤,检查src/test/resources/h2目录是否存在且包含文件:

    run: ls -la src/test/resources/h2/
    

    如果文件不存在,说明actions/checkout@v4没有拉取到该文件,检查.gitignore是否意外排除了h2目录或.sql文件。

内容的提问来源于stack exchange,提问作者Thilo Schwarz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 13:31:12