2. 简介
Apache Maven 是 Java 项目中最流行的构建工具之一。它不仅解决了依赖和仓库管理的问题,更重要的是推动了项目间统一的目录结构规范。
本文将快速解析 Maven 项目的标准目录结构,帮你理解这些约定背后的设计逻辑。
3. 目录结构
典型的 Maven 项目包含一个 pom.xml 文件和基于约定构建的目录结构:
└───maven-project
├───pom.xml
├───README.txt
├───NOTICE.txt
├───LICENSE.txt
└───src
├───main
│ ├───java
│ ├───resources
│ ├───filters
│ └───webapp
├───test
│ ├───java
│ ├───resources
│ └───filters
├───it
├───site
└───assembly
⚠️ 虽然可以通过项目描述符自定义目录结构,但强烈不建议这样做。统一的结构能提高团队协作效率,避免踩坑。
接下来我们深入解析每个标准文件和子目录的用途。
4. 根目录
这是所有 Maven 项目的起点。根目录通常包含以下关键文件和目录:
- pom.xml:项目的核心配置文件,定义了构建生命周期中的依赖和模块
- LICENSE.txt:项目的开源协议声明(如 Apache 2.0、MIT 等)
- README.txt:项目简要说明文档(现在更常用 README.md)
- NOTICE.txt:项目使用的第三方库版权声明
- src/main:存放最终会打包到 artifact 中的源代码和资源
- src/test:包含所有测试代码和资源(不会被打包)
- src/it:保留给 Maven Failsafe Plugin 使用的集成测试目录
- src/site:存放通过 Maven Site Plugin 生成的项目文档
- src/assembly:二进制包的组装配置目录
5. src/main 目录详解
作为 Maven 项目的核心目录,所有需要打包到最终 artifact(JAR/WAR)的文件都应放在这里。其子目录分工明确:
- src/main/java:Java 源代码主目录
- src/main/resources:配置文件存放区,包括:
- 国际化(i18n)文件
- 多环境配置文件(如 dev/prod)
- XML 配置文件
- src/main/webapp:Web 应用专用目录,包含:
- JavaScript/CSS 文件
- HTML 页面
- 视图模板
- 图片等静态资源
- src/main/filters:构建阶段用于向资源文件注入值的过滤器配置
6. src/test 目录详解
该目录存放所有组件的测试代码,⚠️ 注意其内容不会进入最终产物。主要子目录包括:
- src/test/java:测试用例源代码
- src/test/resources:测试专用的配置文件
- src/test/filters:测试阶段使用的资源过滤器配置
7. 总结
本文系统解析了 Apache Maven 的标准目录结构。遵循这些约定能带来三大优势:
✅ 降低新成员上手成本
✅ 提高多模块项目维护效率
✅ 避免自定义目录带来的构建问题
更多 Maven 项目结构示例可参考 GitHub 实例。记住:在 Maven 世界里,约定优于配置不是口号,而是提高效率的利器。