ssm关于找不到mapper.xml文件的问题,pom.xml配置资源文件的问题

其实不光是mapper.xml文件,还有一些其他的资源会加载失败,我自己尝试了n多办法,但都失败了,结合了网上CSDN和博客园里面多篇文章的内容,才算是搞定了这个问题,但是看过的文章实在是忘记都有哪些了,就不贴出来了,在这里向技术大佬致敬。

 

一般我的xml文件和properties文件(例:log4j.properties,jdbc.properties,spring-mvc.xml)都是放在config目录里面,和src目录是平级的,

而在我运行时,经常会遇到mybatis的mapper.xml文件加载失败的情况,而log4j.properties更是家常便饭。

 

结合多篇文章的结果得出的解决办法就是在pom.xml文件里面配置资源文件的位置,

这个解决只能用于maven项目,不过现在不用maven的web项目已经很少了吧,毕竟手动导包挺麻烦的,pom.xml不香吗。

注意,要配置每个xml文件和properties的位置,

因为在pom.xml里面配置过资源文件后,原本项目默认的资源文件路径配置可能失效,

比如 src/main/recources

 

 

这里贴出我的pom.xml的相关部分代码

 

<!--                     加载配置资源文件                     -->
<resources>
    <!--            Config             -->
    <resource>
        <directory>config</directory>
        <includes>
            <include>spring-mvc.xml</include>

            <include>applicationContext-DB.xml</include>
            <include>applicationContext-User.xml</include>

            <include>ApplicationContext/ac-DataSource.xml</include>
            <include>ApplicationContext/ac-Transaction.xml</include>
            <include>ApplicationContext/ac-SqlSessionsFactoryDB.xml</include>
            <include>ApplicationContext/ac-SqlSessionsFactoryUser.xml</include>
        </includes>
        <filtering>true</filtering>
    </resource>
    <!--            Config             -->

    <!--           Properties and Mapper          -->
    <resource>
        <directory>config</directory>
        <includes>
            <include>Properties/jdbc.properties</include>
            <include>Properties/log4j.properties</include>

            <!--               Maper               -->
            <include>Mapper/User/AdminMapper.xml</include>
            <include>Mapper/User/StudentMapper.xml</include>
            <include>Mapper/User/TeacherMapper.xml</include>

            <include>Mapper/DB/DBMapper.xml</include>
            <!--               Maper               -->
        </includes>
        <filtering>false</filtering>
    </resource>
    <!--           Properties and Mapper          -->

</resources>
<!--                     加载配置资源文件                     -->

<resources></resources>标签是要放到<build></build>标签内的

关于<filtering></filtering>的取值是true和false,是否开启过滤,

可以选择性的搭配<properties></properties>标签配合使用,具体标准规范请参照相关的文档或技术文章。

<directory>和<includes>结合来锁定获取一个资源文件,

<directory>是获取目录,<includes>是映射路径

 

资源文件将会映射到 项目\WEB-INF\classes目录下

具体映射关系如下

<!-- 这个配置将会把项目里的config/Properties/jdbc.properties文件映射到
项目/WEB-INF/classes/Properties/jdbc.properties  -->

<resource>
        <directory>config</directory>
        <includes>
            <include>Properties/jdbc.properties</include>
        </includes>
</resource>

<!-- 这个配置将会项目里的config/Properties/jdbc.properties文件映射到
项目/WEB-INF/classes/jdbc.properties -->

<resource>
        <directory>config/Properties</directory>
        <includes>
            <include>jdbc.properties</include>
        </includes>
</resource>

具体映射规则,将pom.xml里的配置和 tomcat/webapps/classes目录里的对比一下就了解了。


版权声明:本文为qq_38848781原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。