构建Maven项目的时候,如果没有进行特殊的配置,Maven会按照标准的目录结构查找和处理各种类型文件。
1)src/main/java和src/test/java目录下的所有*.java文件分别在comile和test-comiple阶段被编译,编译结果分别放到了target/classes和targe/test-classes目录中,但是这两个目录中的其他文件都会被忽略掉。
2)src/main/resouces和src/test/resources这两个目录中的文件也会分别被复制到target/classes和target/test-classes目录中。
但是会出现如下情况
1)放在src/main/java下的xml文件,比如mybatis中的mapper.xml,是不会被默认加载的。
2)想要排除默认加载的某些文件,比如我不想加载init.json文件
这个时候就要用到<resource/>标签和maven-resources-plugin插件了,用法如下
resource的filtering属性用来表示资源文件中的占位符是否需要被替换,true为需要替换。这个不写的话就等着抓脑袋吧。。。
比如xml文件中的${jdbc.url},如果设置为false,就无法替换这些占位符。
<build> <!-- 通过resource标签指定加载配置文件 --> <resources> <resource> <directory>src/main/java</directory> <!-- 要加载的文件在哪个文件夹 --> <filtering>true</filtering> <includes> <include>**/*.xml</include> </includes> </resource> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <includes> <include>**/*.xml</include> <include>**/*.properties</include> <!-- <include>**/*.json</include> --> </includes> <excludes> <exclude>**/*.json</exclude> <!-- 排除掉init.json文件--> </excludes> </resource> </resources> </build> <plugins>标签中新增 <!-- resource插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.6</version> </plugin>
这些代码写在哪个工程里,就需要对哪个工程clean install。由于我将它们放在druid-parent工程中,所以对druid-parent进行clean install。
打开target目录,可以发现init.json被排除了。而properties和xml被成功加载。