今天遇到个maven打包问题,发现mybatis的Mapper.xml文件始终未生效。后经过多番折腾,发现maven默认不打包代码目录下的.xml文件。
例如下图中代码目录下的两个xml文件,总是不出现在target目录下。可见是Maven的default生命周期中负责处理资源的插件没有打包xml文件
- generate-resources
- process-resources (复制和处理资源文件到target目录,准备打包)
解决办法
方法1:maven编译插件默认会打包所有resources文件下的文件,所以将mapper.xml放到该目录下。
方法2:修改maven编译插件默认行为,在pom.xml build段中加入资源文件路径,如我的工程中增加了红色标注的内容
<build> <finalName>xxxx</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.1.1</version> </plugin> </plugins> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> </resource> </resources> </build>