今天在使用IDEA导入maven项目,编译时发现控制台报错编译不过,提示是XX文件缺失或者路径找不到。但是在Eclipse下却是正常的。
这是因为对于MAVEN项目,Eclipse会自动把项目srcmainJava目录下的配置文件(.xml)和资源文件(.properties)以及其他文件搬运到target目录下,而intellij idea默认是不会帮我们做这件事的。需要我们自己往pom文件的<build></build>里面加上这个:
<!--解决Intellij构建项目时,target/classes目录下不存在mapper.xml等资源文件的问题-->
<resources>
<resource>
<directory>${basedir}/src/main/java</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>
</resources>
其中<include>**/*.*</include>表示把srcmainJava目录下所有文件都搬运到target对应位置,如果只需要特定的后缀文件,则根据如下配置即可<include>**/*.xml</include>载入.xml文件,<include>**/*.json</include>载入.json文件。
---------------------------------------------分割线------------------------------------------
今天又发现一个问题,如果你的项目结构是这样:
你会发现这个resources在install的时候也无法加载到target,在project structure中resource引用也无效
这时候应该要在pom文件继续上面的操作里面加这个
这样就可以完整编译了。
其实有个问题,在处理的过程中我发现,pom中去掉这块,install的时候就会有resources,但是java中的资源文件就无法被载入。加上这块,java中的资源文件就可以被载入,但是install的时候就不会有resources。我真的是百思不得其姐,后来就加了后面那块的resources引用。我猜测估计是和哪里的配置冲突了。希望有谁知道可以解答下这个奇怪的问题。