一个 maven 项目中 Source Dir 里面有除了 .java 的文件
然而这种情况下,IDEA 会按照 maven 的方式来 make, build
所以在 target/classes 中并不会出现资源文件(.xml 等)
项目中用到了 mybatis-spring
所以会在 source dir 中出现 mapping/*.xml 等
生成的 target/classes 也需要将 source dir 中的 .xml
怎么办呢?!
好吧,前前后后花费了大概三天,四五个小时。
之前的问题在于 maven package 中报错,.xml 找不到,我还一直没理解,原来就是因为 target/classes 中 确实 没有相应的 .xml 文件。
队友用的 eclipse 毫无这个问题
这是怎么回事呢?
http://stackoverflow.com/questions/12444683/why-xml-files-in-eclipse-projects-source-directory-is-not-copied-to-target-clas
这篇就解答了,实际上 eclipse 默认会将资源文件复制到输出目录中。。。好吧
IDEA 要怎么复制呢?
http://stackoverflow.com/questions/11176969/intellij-how-to-make-non-java-files-copied-to-the-bin-directory-as-well
这篇是相关问题的汇总。
但即使是在 Compiler | Resource Patterns
中添加 ?*.xml
甚至 **.*.xml
依然不能解决,我猜想原因在于 IDEA 识别出了 maven 项目,会按照它的方式来处理资源文件(*.xml 等)
解决办法
解决办法在第一个链接中已经提到
在 pom.xml 中添加如下代码:1
2
3
4
5
6
7
8
9
10
11
12
13<build>
<resources>
<resource>
<!-- This include everything else under src/main/java directory -->
<directory>${basedir}/src/main/java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<finalName>flyeagle</finalName>
...
</build>
或者参考http://blog.csdn.net/u012599988/article/details/44041205,插入1
2
3
4
5
6
7
8
9
10
11
12<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
...
</build>
这时再次 build,世界都清净了!