建Maven项目的时候,如果没有进行特殊的配置,Maven会按照标准的目录结构查找和处理各种类型文件。
src/main/java和src/test/java
这两个目录中的所有*.java文件会分别在comile和test-comiple阶段被编译,编译结果分别放到了target/classes和targe/test-classes目录中,但是这两个目录中的其他文件都会被忽略掉。
src/main/resouces和src/test/resources
这两个目录中的文件也会分别被复制到target/classes和target/test-classes目录中。
target/classes
打包插件默认会把这个目录中的所有内容打入到jar包或者war包中。
pom中
src/main/java**/*.properties**/*.xmlfalsesrc/main/resources**/*.properties**/*.xml**/*.ftl**/*.html**/*.pdffalse
Maven项目的标准目录结构
src
main
java 源文件
resources 资源文件
filters 资源过滤文件
config 配置文件
scripts 脚本文件
webapp web应用文件
test
java 测试源文件
resources 测试资源文件
filters 测试资源过滤文件
it 集成测试
assembly assembly descriptors
site Site
target
generated-sources
classes
generated-test-sources
test-classes
xxx.jar
pom.xml
LICENSE.txt
NOTICE.txt
README.txt
资源文件的配置
资源文件是Java代码中要使用的文件。代码在执行的时候会到指定位置去查找这些文件。前面已经说了Maven默认的处理方式,但是有时候我们需要进行自定义的配置。
有时候有些配置文件通常与.java文件一起放在src/main/java目录(如mybatis或hibernate的表映射文件)。有的时候还希望把其他目录中的资源也复制到classes目录中。这些情况下就需要在Pom.xml文件中修改配置了。
可以有两种方法:
一是在元素下添加进行配置。
另一种是在的子元素中配置maven-resources-plugin等处理资源文件的插件。
配置resouces节点
.......
src/main/resources
**/*.properties
**/*.xml
false
src/main/java
**/*.properties
**/*.xml
false
......
配置资源处理插件
maven-resources-plugin
2.5
copy-xmls
process-sources
copy-resources
${basedir}/target/classes
${basedir}/src/main/java
**/*.xml
另一个插件也能完成相同的功能
org.codehaus.mojo
build-helper-maven-plugin
1.8
add-resource
generate-resources
add-resource
src/main/java
**/*.xml
打包时文件相关的配置
打包时target/classes目录中的资源文件会和class字节码一起被打进jar包或war包中。有时候默认的情况不能完全满足需求,如target/classes目录中的一些文件不希望打入jar包中,就需要额外配置maven-jar-plugin插件。
org.apache.maven.plugins
maven-jar-plugin
2.4
*.properties
true
xxxxxx.ConsoleLauncher