背景描述
最近在写项目时因为用spring cloud alibaba时,由于src中modules下有多个mapper,在将以前的mapper.xml放在resources下没那么方便查找;就想着把xml也方在对应的modules下方便开发管理;
mybatis-plus:
# 将原有的配置注释 调整为下面的配置
# mapper-locations: classpath:/mapper/**/*.xml
mapper-locations: classpath:com/xxx/modules/*/mapper/*.xml
报错如下截图
发现还是不对一致困扰了我很久,一致以为是 mapper-locations 后的位置不对,但是怎么调整都没有找到原因,还是妥协暂时将xml放在resources目录下;第二天突然想着看target下编译是否成功,发现target编译下压根就没有xml,自此困扰我一天的问题终于找到原因
问题解决
要解决在项目中,把src编译下的xml编译到target中就很简单了
<build>
<!--项目打包会将java目录中的*.xml文件进行打包-->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<!--默认情况下是true 现在修改为false 就不会过滤掉这个xml文件了-->
<filtering>false</filtering>
</resource>
<resource>
<directory>
src/main/resources
</directory>
</resource>
</resources>
</build>
打完收工
彩蛋
classpath:与classpath*:的区别
classpath:只会到你的class路径中查找找文件;
classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找