GitHub Action中Spring Boot测试无法读取类路径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

