Maven设置:非resources文件夹下配置文件也拷贝到target对应目录的注意事项
Posted ljfsmile0613
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maven设置:非resources文件夹下配置文件也拷贝到target对应目录的注意事项相关的知识,希望对你有一定的参考价值。
首先来一段maven中的资源插件:
1 <build> 2 <resources> 3 <resource> 4 <directory>src/main/java</directory><!--所在的目录--> 5 <includes><!--包括目录下的.properties,.xml 文件都会扫描到--> 6 <include>**/*.properties</include> 7 <include>**/*.xml</include> 8 </includes> 9 <!—filtering 选项 false 不启用过滤器, *.property 已经起到过滤的作用了 --> 10 <filtering>false</filtering> 11 </resource> 12 </resources> 13 </build>
学过maven的都知道,默认没有配置<resources>的时候,maven执行编译代码时,会默认把:src/main/resources目录中的所有文件拷贝到target/classes目录中。
但在实际开发中,有时候配置文件不全放在resources文件夹中,所以这时候需要maven在compile阶段的时候,将非resources文件夹中的文件也拷贝到target/classes对应的目录中去,该如何设置呢?
答案就是往maven的pom文件中添加资源插件,代码如上所示。
上面的代码的作用就是将:src/main/java目录下的任何子目录中的以:properties或xml结尾的文件,都拷贝到target/classes所对应的目录下去。
如下是添加如上代码后,执行compile后的target/classes目录:
如图片中所标识的,为什么加了上面的资源设置后,虽然Java目录下的设置文件能够被拷贝到对应的目录中去,但resources文件夹下的文件却在target/classes目录下找不到?
其实,如果你设置了指定某个文件夹下的某种类型文件要拷贝到target/classes对应的目录中的话,那么原来默认的只拷贝:resources目录下的所有文件到target/classes的这一行为也会被取消,也就是maven这一默认行为没了~~~
这种方式跟一个类中的构造方法挺像的:如果你没写构造方法,那么默认会给你提供一个无参的构造方法,但是如果你自己定义了构造方法,那么也就不会给你提供默认的构造方法了。
所以,如果你也想resources中的文件被拷贝到target/classes目录下,那么在build中再添加一个资源插件就好了,如下所示:
1 <resource> 2 <!--这里要注意,如果设置了处理设置,原先resources目录下的文件都不会拷贝到target目录下了,所以这里还要再设置一下resources目录,以便能拷贝过去--> 3 <directory>src/main/resources</directory> 4 <includes> 5 <!--表示resources下的任何子目录的任何文件都拷贝过去--> 6 <include>**/*.*</include> 7 </includes> 8 <filtering>false</filtering> 9 </resource> 10 </resources>
*.*表示的是匹配所有类型的文件。添加完毕后,再次执行compile后,可以看到resources文件夹中的文件也被拷贝到了:target/classes目录下
因此当idea用maven设置非resources文件夹的问价拷贝的时候,如果想要也拷贝resources文件夹的文件,记得要再加一个资源配置到pom文件中;就好比如你自己定义了一个有参的构造方法,但是还想要无参的构造方法,还是要自己手动写一个无参的构造方法,因为你一定义了构造方法,jvm就不会再为你提供无参的构造方法了。
另外还要注意:pom是xml文件,xml文件是区分大小写的,xml与XML是不同的类型文件,配置的时候记得要小写。
以上是关于Maven设置:非resources文件夹下配置文件也拷贝到target对应目录的注意事项的主要内容,如果未能解决你的问题,请参考以下文章
IDEA中的Maven项目配置了resources标签还是不能成功导出资源?
读取Maven项目下resources目录下的配置文件(properties为例)
maven的src/test/resources中的配置文件怎样读取?
myeclipse部署maven项目到tomcat,src/main/resources里面配置文件部署不到webapp下classes