起因
- 在一个乱糟糟的项目中写了一些SPI,进行一个小测试,可是我的SPI怎么都执行不到;
- 新写了个stater来进行测试,发现输出是符合预期的;
- 猜测试编译结果没有更新,clean项目进行重新编译,结果不是;
- 猜测是jar版本号不一致,经对比,并没有;
- 两个项目同时进行debug对比,发现是没有加载自己的META-INF文件;
- 查看了自己的target目录发现根本没有编译出相关的配置文件;
- 确认原因:在pom中的resource资源没有指定META-INF;
反思
在这个简单问题排查过程中,犯了两个很初级的错误
- 猜测试编译结果没有更新的时候,应该先去查看target编译结果,再进行clean;
- 遇到此类情况,要猜测配置问题,对pom的resource标签以及Springboot的编译理解有偏差。
结论
代码在两个项目中执行结果不一致的时候?
- 对比两个项目的java 版本号以及其他相关jar版本号是否一致;
- 查看target,观察编译结果,查看Bean是否编译,是否符合预期;
- 查看配置,是否符合预期;
- 最终再进行代码的debug;
- …