文章目录
一、背景
在Maven出现之前,Java 项目的目录结构都没有一个统一的标准,配置文件到处都是,单元测试代码到底应该放在哪里,没有一个权威的规范。而Maven对项目的目录结构、测试用例命名方式等内容都做了规定。使用Maven管理的项目必须满足这些规则。用户在不同项目间切换的时候,免去了额外学习成本,即约定优于配置(Convention Over Configuration)。
二、目录结构和解读
| 目录 | 解读 |
|---|---|
| src/main/java | 主代码。编写java源代码的地方。 |
| src/main/resources | 主资源。执行compile之后,这个目录中的所有文件及子目录,会复制到target/classes目录中。 |
| src/main/filters | 资源过滤文件 |
| src/main/webapp | web应用的目录,WEB-INF,js,css等。(类似于动态web项目里的webContent目录。) |
| src/main/assembly | 组件的描述配置,如何打包 |
| src/test/java | 测试代码。编写测试代码的地方。测试代码只在运行测试时用到,不会被打包。 |
| src/test/resources | 测试资源。执行test-compile之后,这个目录中的所有文件及子目录,会复制到target/test-classes目录中。 |
| src/test/filters | 测试资源过滤库。 |
| src/it | Integration Tests (primarily for plugins) |
| src/site | 一些文档 |
| target | maven的输出目录。存放项目构建后的文件和目录,如jar包、war包、编译的class文件等。是clean、compile等命令操作的目录 |
| LICENSE.txt | Project’s license |
| NOTICE.txt | Notices and attributions required by libraries that the project depends on |
| README.txt | Project’s readme |
在项目的顶层有:src、target、pom.xml文件、文本文档(readme.txt、license.txt、NOTICE.txt等),此外,‘.gitignore’是git的忽略配置文件一般也放在顶层。
这个结构只有两个子目录:src和target。这里唯一需要的其他目录是元数据,如cvs,.git或.svn,以及多项目构建中的任何子项目(每个子项目都将如上所述)。
如果工程的构建还有其他贡献源,那么它们将位于其他子目录下:例如,src/main/antlr将包含antlr语法定义文件。(这句话应该可以解释,为啥项目中有其他目录。)
三、工作中项目的结构截图
四、参考地址:
- APACHE原址:http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html