约定优于配置原则
Maven 通过约定定义标准项目结构,开发者无需手动配置路径。
标准目录结构
Maven 项目目录规范
XML
project/
├── pom.xml # 项目配置文件
├── src/
│ ├── main/
│ │ ├── java/ # 源代码目录
│ │ ├── resources/ # 资源文件目录
│ │ └── webapp/ # Web项目目录(WAR)
│ ├── test/
│ │ ├── java/ # 测试代码目录
│ │ └── resources/ # 测试资源目录
├── target/ # 构建输出目录
目录用途说明
| 目录 | 用途 |
|---|---|
| src/main/java | 项目主代码 |
| src/main/resources | 配置文件、properties、XML |
| src/main/webapp | Web 应用资源(HTML、JSP) |
| src/test/java | 单元测试代码 |
| src/test/resources | 测试配置文件 |
| target | 编译输出、打包产物 |
约定的优势
对比传统配置方式
XML
<!-- Ant 需手动指定每个目录 -->
<project>
<property name="src.dir" value="src"/>
<property name="build.dir" value="build"/>
<property name="dist.dir" value="dist"/>
...
</project>
<!-- Maven 无需配置,自动识别标准目录 -->
<project>
<!-- 仅需声明坐标 -->
<groupId>com.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0.0</version>
</project>
核心优势
| 优势 | 说明 |
|---|---|
| 简化配置 | 遵循约定无需声明路径 |
| 统一规范 | 团队协作结构一致 |
| 工具兼容 | IDE、CI/CD 自动识别 |
| 降低门槛 | 新人快速上手 |
自定义目录(可选)
如需打破约定,可手动配置:
XML
<build>
<sourceDirectory>src/java</sourceDirectory>
<testSourceDirectory>test/java</testSourceDirectory>
<outputDirectory>build/classes</outputDirectory>
</build>
不推荐自定义目录,遵循约定更便于维护。
资源目录约定
默认行为
text
src/main/resources/ → 打包到构件根目录
src/main/resources/config/ → 打包为 config/
资源过滤示例
text
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering> <!-- 启用变量替换 -->
</resource>
</resources>
</build>
要点总结
- Maven 标准目录:src/main/java、src/main/resources、src/test/java
- 遵循约定可减少90%配置工作
- target 目录存放构建产物,不提交版本库
- 不推荐自定义目录结构,遵循约定最佳
📝 发现内容有误?点击此处直接编辑