maven打包时, 资源文件没有被打包进来的问题

问题起因
我们系统使用Mybatis作为持久层框架,这里不详细描述Mybatis框架的使用方法,我们讲述三种加载mapper的方式总结:

  1. <mapper resource="" />加载普通的xml文件,传入xml的相对路径(相对于类路径)
  2. <mapper class="" />使用mapper接口的全限定名来加载,若mapper接口采用注解方式,则不需要xml;若mapper接口没有采用注解方式,则mapper接口和xml文件的名称要相同,且在同一个目录
  3. <package name="" />扫描指定包下的所有mapper,若mapper接口采用注解方式,则不需要xml;若mapper接口没有采用注解方式,则mapper接口和xml文件的名称要相同,且在同一目录。

使用第三种方式时,这样就会自动加载com.yogurt.mapper包下的所有mapper,这种方式需要将mapper接口文件和mapper.xml文件都放在com.yogurt.mapper包下,且接口文件和xml文件的文件名要一致注意,在IDEA的maven开发环境下,maven中还需配置<resources>标签,否则maven打包不会将java源码目录下的xml文件打包进去,怎么配置?请继续看下去。

<mappers>
    <package name="com.yogurt.mapper"/>
</mappers>

此时会存在两种情况:

  1. 将mapper.xml文件配置在src/main/resources下
  2. 将mapper.xml文件配置在src/main/java目录下。注意,因为src/main/java被设定为了源码目录,默认只会将其中的Java文件进行编译打包。

问题出现

上述第二种方式,在调用接口报错如下

image-20200527205657457

 解决方案

解决方案呢?当然有,手动将src/main/resources也添加到配置就可以了。按如下的pom.xml配置,maven打包时,既能包含src/main/java下的XML文件,也能包含资源目录src/main/resources)下面的资源文件

<build>
    <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>

            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*</include>
                </includes>
            </resource>
        </resources>
</build>

看都看到这里了,给个赞吧~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

颓了呀

收到你温暖的礼物,超开心,感激

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值