
之前写springboot项目时遇到一个问题,在网上查阅了很多资料并不能解决我的问题,当我还在以为主要问题是maven配置或者依赖包冲突时,这篇文章误打误撞启发了我
单元测试出现:java.lang.IllegalStateException: Failed to load ApplicationContext

问题场景
Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.2:test (default-test)
运行项目时会出现上面那句报错语句,原因可能有很多,比如依赖包版本问题,多依赖包之间版本不兼容,还有配置文件的问题等等...这篇文章要讲的是由于maven在打包时出现的资源纰漏,就是静态资源导出失败问题,之前在做spring项目时经常遇到这种问题,我们的方法要么是手动将资源文件复制到打包文件夹对应位置,要么在pom.xml文件中的build标签下添加如下代码:
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
解决方案
而我们在写springboot项目是经常使用的配置文件是*.yml/yaml ,所以我们也要将这种格式的文件一并导出,只需要在两处<includes>标签下再添加两行代码即可。
<include>**/*.yml</include>
<include>**/*.yaml</include>
完整代码如下:
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.yml</include>
<include>**/*.yaml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.yml</include>
<include>**/*.yaml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>