构建Maven项目的时候,若是没有进行特殊的配置,Maven会按照标准的目录结构查找和处理各类类型文件。java
src/main/java和src/test/java web
这两个目录中的全部*.java文件会分别在comile和test-comiple阶段被编译,编译结果分别放到了target/classes和targe/test-classes目录中,可是这两个目录中的其余文件都会被忽略掉。apache
src/main/resouces和src/test/resourcesmybatis
这两个目录中的文件也会分别被复制到target/classes和target/test-classes目录中。app
target/classeswebapp
打包插件默认会把这个目录中的全部内容打入到jar包或者war包中。maven
资源文件是Java代码中要使用的文件。代码在执行的时候会到指定位置去查找这些文件。前面已经说了Maven默认的处理方式,可是有时候咱们须要进行自定义的配置。测试
有时候有些配置文件一般与.java文件一块儿放在src/main/java目录(如mybatis或hibernate的表映射文件)。有的时候还但愿把其余目录中的资源也复制到classes目录中。这些状况下就须要在Pom.xml文件中修改配置了。ui
能够有两种方法:spa
<build> ....... <resources> <resource> <directory>src/main/resources</directory> <excludes> <exclude>**/*.properties</exclude> <exclude>**/*.xml</exclude> </excludes> <filtering>false</filtering> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> ...... </build>
<plugin> <artifactId>maven-resources-plugin</artifactId> <version>2.5</version> <executions> <execution> <id>copy-xmls</id> <phase>process-sources</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>${basedir}/target/classes</outputDirectory> <resources> <resource> <directory>${basedir}/src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources> </configuration> </execution> </executions> </plugin>
另外一个插件也能完成相同的功能
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>1.8</version> <executions> <execution> <id>add-resource</id> <phase>generate-resources</phase> <goals> <goal>add-resource</goal> </goals> <configuration> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources> </configuration> </execution> </executions> </plugin>
打包时target/classes目录中的资源文件会和class字节码一块儿被打进jar包或war包中。有时候默认的状况不能彻底知足需求,如target/classes目录中的一些文件不但愿打入jar包中,就须要额外配置maven-jar-plugin插件。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.4</version> <configuration> <excludes> <exclude>*.properties</exclude> </excludes> <archive> <manifest> <addClasspath>true</addClasspath> <mainClass>xxxxxx.ConsoleLauncher</mainClass> </manifest> </archive> </configuration> </plugin>
参考资料
http://bglmmz.iteye.com/blog/2063856