拥有一个通用的目录布局能够让开发人员在不一样的Maven项目中都产生一种熟悉的感受.接下来的内容记载了Maven指望的目录布局,而Maven自己建立的结构也是这样的.请尽量的符合这个结构.然而,不过你不能这么作,这些设置也是能够被不一样的项目描述重写的.java
src/main/java | Application/Library sources |
src/main/resources | Application/Library resources |
src/main/resources-filtered | Application/Library resources which are filtered. (Starting with Maven 3.4.0, not yet released.) |
src/main/filters | Resource filter files |
src/main/webapp | Web application sources |
src/test/java | Test sources |
src/test/resources | Test resources |
src/test/resources-filtered | Test resources which are filtered by default. (Starting with Maven 3.4.0, not yet released.) |
src/test/filters | Test resource filter files |
src/it | Integration Tests (primarily for plugins) |
src/assembly | Assembly descriptors |
src/site | Site |
LICENSE.txt | Project's license |
NOTICE.txt | Notices and attributions required by libraries that the project depends on |
README.txt | Project's readme |
在项目文件描述的最顶层:除了有pom.xml以外,还有一些能够被用户直接阅读的文本文档,如: README.txt , LICENSE.txt 等.git
在这个结构中只有两个子目录:src和target.除此以外只但愿存在的其余目录是元数据(像:CVS,.git或.svn)和一个子项目目录(每一个子项目自己的结构又和上面所描述的同样).web
target目录用来存放全部的构建输出.app
src目录则包含全部用于构建项目及它的站点等等的原材料.它为每种类型提供了一个子目录:main对应主要构建工件,test对应单元测试代码和资源,还有site等等.webapp
在工件产生源目录(如main和test)下,这里有个jave语言目录(存在常见的包层级结构)和resources目录(这里面的内容会被拷贝到默认资源定义指定的目标类路径classpath下)svn
若是这里还有其余为构建项目做出贡献的来源,它们将被放置在其余子目录:如src/main/antlr应该包含Antlr语法定义文件.布局