我们在src/main/java
下添加了自定义的xml
文件,当使用idea或maven进行编译时,classes
目录下并没有包含指定的xml
配置文件。
maven默认认为src/main/java
为*.java
存储的目录,maven会使用maven-compiler-plugin
插件编译该目录,将该目录下所有的.java
文件编译为.class
文件后,src/main/java
文件夹就没有存在的必要了。maven在打包是会默认将src/main/java
下的文件忽略。
通过在<build>
标签下使用<resources>
标签手动更改maven
的文件包含策略。
<build>
<resources>
<!-- 指定包含 src/main/java 目录下的所有文件 -->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>
<!-- 指定包含 src/main/resources 目录下的所有文件 -->
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>
</resources>
</build>
<build>
<resources>
<!-- 指定包含 src/main/java 目录下的所有 .xml/.properties 文件 -->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
</build>
<build>
<resources>
<!-- 指定包含 src/main/java 目录下的所有不是以 .java 结尾的文件 -->
<resource>
<directory>src/main/java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
</build>
不同于src/main/java
,如果要包含src/test/java
下的文件则应该将<resources>
、<resource>
标签替换为testResources
、testResource
。<includes>
<excludes>
用法和main
目录一致。如下:
<build>
<testResources>
<testResource>
<directory>src/test/java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</testResource>
</testResources>
</build>